How does a Doge public key is created from a private key? I am looking for the differences between the creation of Doge public keys and Bitcoin public keys when inserting a private key.

I am trying to make a small web-app that signs messages. There are a tons of them with bitcoin. They receive a private key and creates the public key from there. When I enter a Doge private key to the input the output is still a Bitcoin public key (Starts with 1 for example instead of D).
Dogecoin uses the same public key cryptography ECC with curve secp256k1, so public key generation is the same. 


  When I enter a Doge private key to the input the output is still a
  Bitcoin public key (Starts with 1 for example instead of D).


You are confusing addresses with public keys. The 1 or the D is just a prefix to an address, depending on the type of address, see https://en.bitcoin.it/wiki/List_of_address_prefixes

After you generate the public key, you have to do the following in order to get an address:

BASE58CHECK(&lt;address-prefix&gt; HASH160(&lt;pubKey&gt;))

Dogecoin uses different prefixes for the different types of addresses, see https://github.com/dogecoin/dogecoin/blob/master/src/chainparams.cpp (note these are for mainnet only):

base58Prefixes[PUBKEY_ADDRESS] = std::vector&lt;unsigned char&gt;(1,30);  // 0x1e
base58Prefixes[SCRIPT_ADDRESS] = std::vector&lt;unsigned char&gt;(1,22);  // 0x16
base58Prefixes[SECRET_KEY] = std::vector&lt;unsigned char&gt;(1,158); // 0x9e


Changing the address prefixes should yield compatible addresses.