Add files via upload
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) <https://github.com/tarampampam>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -0,0 +1,112 @@
|
||||
<div align="center">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://socialify.git.ci/tarampampam/free-domains/image?description=1&font=Raleway&forks=1&issues=1&owner=0&pulls=1&pattern=Solid&stargazers=1&theme=Dark">
|
||||
<img src="https://socialify.git.ci/tarampampam/free-domains/image?description=1&font=Raleway&forks=1&issues=1&owner=0&pulls=1&pattern=Solid&stargazers=1&theme=Light">
|
||||
</picture>
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
[![Tests Status][badge-tests]][actions]
|
||||
[![Deploy Status][badge-deploy]][deploy]
|
||||
</div>
|
||||
|
||||
Free subdomains for personal sites, open-source projects, and more. Here is a list of supported domain names:
|
||||
|
||||
| Domain name | Features |
|
||||
|:-------------------------------------:|:---------------------------------------------------------:|
|
||||
| ⚡ [`*.localplayer.dev`](https://localplayer.dev/) | ![cf][badge-cf] ![dnssec][badge-dnssec] ![ssl][badge-ssl] |
|
||||
| ⚡ [`*.is-not-a.dev`](https://is-not-a.dev/) | ![cf][badge-cf] ![dnssec][badge-dnssec] ![ssl][badge-ssl] |
|
||||
|
||||
> Wildcards (like `*.foo.is-not-a.dev`) are supported too, but the reason for their registration should be very clear and described in detail.
|
||||
|
||||
[badge-cf]:https://shields.io/badge/%20-cloudflare-blue?logo=cloudflare&style=plastic?cacheSeconds=3600
|
||||
[badge-dnssec]:https://shields.io/badge/%20-DNSSEC-blue?logo=moleculer&logoColor=white&style=plastic?cacheSeconds=3600
|
||||
[badge-ssl]:https://shields.io/badge/SSL-Required-blue?style=plastic?cacheSeconds=3600
|
||||
|
||||
## Why?
|
||||
|
||||
First of all, I want to answer one important question - "Why are you giving out domains for free?". Because sometimes I need domains for my pet projects, and instead of buying new domains every time, I decided to buy one for everyone, and use subdomains. And why not share them with the community?
|
||||
|
||||
## Domains settings
|
||||
|
||||
| Option | `*.localplayer.dev` | `*.is-not-a.dev` |
|
||||
|:--------------------------------------------------------------------------:|:-------------------------:|:-------------------------:|
|
||||
| [DNSSEC][dnssec] | ✅ | ✅ |
|
||||
| Email | ❌ | ❌ |
|
||||
| SSL/TLS * | [Full][ssl-full] | [Full][ssl-full] |
|
||||
| Always Use HTTPS * | ✅ | ✅ |
|
||||
| HTTP Strict Transport Security (HSTS) | ✅ | ✅ |
|
||||
| Minimum TLS Version * | TLS 1.2 | TLS 1.2 |
|
||||
| Opportunistic Encryption, TLS 1.3 * | ✅ | ✅ |
|
||||
| WAF (Web Application Firewall) * | ✅ (Medium Security Level) | ✅ (Medium Security Level) |
|
||||
| Browser Integrity Check * | ✅ | ✅ |
|
||||
| [Caching Level][caching-levels], Browser Cache TTL * | Standard, 4 hours | Standard, 4 hours |
|
||||
| [Crawler Hints][crawler-hints] * | ✅ | ✅ |
|
||||
| [HTTP/2][http2], [HTTP/2 to Origin][http2-to-origin], HTTP/3 (with QUIC) * | ✅ | ✅ |
|
||||
| [0-RTT Connection Resumption][0rtt] * | ✅ | ✅ |
|
||||
| [gRPC][grpc], WebSockets * | ✅ | ✅ |
|
||||
| [Pseudo IPv4][pseudo-ipv4] * | Add header | Add header |
|
||||
| IP Geolocation (HTTP header `CF-IPCountry`) * | ✅ | ✅ |
|
||||
| Maximum Upload Size * | 100 MB | 100 MB |
|
||||
|
||||
> `*` Available only when proxying (`"proxy": true`) is enabled
|
||||
|
||||
[dnssec]:https://developers.cloudflare.com/dns/additional-options/dnssec
|
||||
[ssl-full]:https://developers.cloudflare.com/ssl/origin-configuration/ssl-modes/full/
|
||||
[ssl-flex]:https://developers.cloudflare.com/ssl/origin-configuration/ssl-modes/flexible/
|
||||
[caching-levels]:https://developers.cloudflare.com/cache/how-to/set-caching-levels
|
||||
[crawler-hints]:https://blog.cloudflare.com/crawler-hints-how-cloudflare-is-reducing-the-environmental-impact-of-web-searches/
|
||||
[http2]:https://www.cloudflare.com/website-optimization/http2/what-is-http2/
|
||||
[http2-to-origin]:https://developers.cloudflare.com/cache/how-to/enable-http2-to-origin
|
||||
[0rtt]:https://developers.cloudflare.com/fundamentals/network/0-rtt-connection-resumption/
|
||||
[grpc]:https://support.cloudflare.com/hc/en-us/articles/360050483011
|
||||
[pseudo-ipv4]:https://support.cloudflare.com/hc/en-us/articles/229666767
|
||||
|
||||
# How to get one?
|
||||
|
||||
1. Star and [fork](https://github.com/open-domains/Register/fork) this repository (follow [this guide](https://github.com/firstcontributions/first-contributions) if you don't know how to make a contributions)
|
||||
2. Add a new file called `<your-subdomain-name>.<root-domain>.json` in the `./domains` folder to register `<your-subdomain-name>` subdomain
|
||||
3. Edit it (below is just an **example**, provide a **valid** JSON file with your needs, the format is very strict; format you can [check here](https://jsonlint.com/)):
|
||||
|
||||
```json
|
||||
{
|
||||
"$schema": "../schemas/domain.schema.json",
|
||||
"description": "<describe your project in this field>",
|
||||
"domain": "<is-an.app or 1bt.uk - select one>",
|
||||
"subdomain": "<your subdomain name>",
|
||||
"owner": {
|
||||
"repo": "<https://URL/to/the/repository/with/subdomain/content/sources>",
|
||||
"email": "<your-public@email.address>"
|
||||
},
|
||||
"record": {
|
||||
"CNAME": "<cname-domain-with-a-dot-at-the-end>",
|
||||
"TXT": ["list", "of", "required", "txt", "records"],
|
||||
"A": ["list", "of", "IPv4", "addresses", "like", "a", "127.0.0.1"],
|
||||
"AAAA": ["list", "of", "IPv6", "addresses", "like", "a", "::1"],
|
||||
"NS": ["list", "of", "nameservers"]
|
||||
},
|
||||
"proxy": false // disable the CF proxy, proxying is always enabled by default
|
||||
}
|
||||
```
|
||||
|
||||
4. Your pull request will be reviewed and merged. Please, don't ignore the PR checklist. If you ignore this repository rules, your PR will be ignored too. _Make sure to keep an eye on it in case we need you to make any changes!_
|
||||
5. After the pull request is merged, please allow up to 24 hours for the changes to propagate _(usually, it takes 5..15 minutes)_
|
||||
6. Enjoy your new domain!
|
||||
|
||||
> Domains, used for illegal purposes will be removed and permanently banned. Please, provide a clear description of your resource in the PR.
|
||||
|
||||
## If you don't know...
|
||||
|
||||
- What is GitHub pages and how to set up a custom domain, read the [docs here](https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site)
|
||||
- The difference between `A`, `CNAME`, and other record types, the article on Wikipedia [is here](https://en.wikipedia.org/wiki/List_of_DNS_record_types)
|
||||
|
||||
> 🔍 A few similar services can be [found here](https://free-for.dev/#/?id=domain).
|
||||
|
||||
[badge-tests]:https://img.shields.io/github/workflow/status/open-domains/Register/tests?label=tests&logo=github&style=for-the-badge
|
||||
[badge-deploy]:https://img.shields.io/github/workflow/status/open-domains/Register/deploy?label=deploy&logo=github&style=for-the-badge
|
||||
|
||||
[actions]:https://github.com/open-domains/Register/actions
|
||||
[deploy]:https://github.com/open-domains/Register/actions/workflows/deploy.yml
|
||||
|
||||
# This repo was forked from
|
||||
https://github.com/tarampampam/free-domains
|
||||
@@ -0,0 +1,98 @@
|
||||
var regNone = NewRegistrar("none")
|
||||
var providerCf = DnsProvider(NewDnsProvider("cloudflare"))
|
||||
|
||||
var proxy = { // https://stackexchange.github.io/dnscontrol/providers/cloudflare
|
||||
on: {"cloudflare_proxy": "on"},
|
||||
off: {"cloudflare_proxy": "off"}
|
||||
}
|
||||
|
||||
/**
|
||||
* Note: glob() is only an internal undocumented helper function (maybe risky).
|
||||
*
|
||||
* @param {String} filesPath
|
||||
* @returns {{
|
||||
* name: string,
|
||||
* data: {
|
||||
* description: string,
|
||||
* domain: string,
|
||||
* subdomain: string,
|
||||
* owner?: {repo?: string, email?: string},
|
||||
* record: {TXT?: string[], A?: string[], AAAA?: string[], CNAME?: string, NS?: string[]},
|
||||
* proxy?: boolean
|
||||
* }}[]}
|
||||
*/
|
||||
function getDomainsList(filesPath) {
|
||||
var result = []
|
||||
var files = glob.apply(null, [filesPath, true, '.json'])
|
||||
|
||||
for (var i = 0; i < files.length; i++) {
|
||||
var basename = files[i].split('/').reverse()[0]
|
||||
var name = basename.split('.')[0]
|
||||
|
||||
result.push({name: name, data: require(files[i])})
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
var domains = getDomainsList('./domains')
|
||||
|
||||
/**
|
||||
* @type {{}}
|
||||
*/
|
||||
var commit = {}
|
||||
|
||||
for (var idx in domains) {
|
||||
var domainData = domains[idx].data
|
||||
var proxyState = proxy.on // enabled by default
|
||||
|
||||
if (!commit[domainData.domain]) {
|
||||
commit[domainData.domain] = []
|
||||
}
|
||||
|
||||
if (domainData.proxy === false) {
|
||||
proxyState = proxy.off
|
||||
}
|
||||
|
||||
if (domainData.record.TXT) {
|
||||
for (var txt in domainData.record.TXT) {
|
||||
commit[domainData.domain].push(
|
||||
TXT(domainData.subdomain, domainData.record.TXT[txt]) // https://stackexchange.github.io/dnscontrol/js#TXT
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
if (domainData.record.CNAME) {
|
||||
commit[domainData.domain].push(
|
||||
CNAME(domainData.subdomain, domainData.record.CNAME, proxyState) // https://stackexchange.github.io/dnscontrol/js#CNAME
|
||||
)
|
||||
}
|
||||
|
||||
if (domainData.record.A) {
|
||||
for (var a in domainData.record.A) {
|
||||
commit[domainData.domain].push(
|
||||
A(domainData.subdomain, IP(domainData.record.A[a]), proxyState) // https://stackexchange.github.io/dnscontrol/js#A
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
if (domainData.record.AAAA) {
|
||||
for (var aaaa in domainData.record.AAAA) {
|
||||
commit[domainData.domain].push(
|
||||
AAAA(domainData.subdomain, domainData.record.AAAA[aaaa], proxyState) // https://stackexchange.github.io/dnscontrol/js#AAAA
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
if (domainData.record.NS) {
|
||||
for (var ns in domainData.record.NS) {
|
||||
commit[domainData.domain].push(
|
||||
NS(domainData.subdomain, domainData.record.NS[ns]) // https://stackexchange.github.io/dnscontrol/js#NS
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var domainName in commit) {
|
||||
D(domainName, regNone, providerCf, commit[domainName])
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"$schema": "../schemas/domain.schema.json",
|
||||
"description": "Root domain",
|
||||
"domain": "is-not-a.dev",
|
||||
"subdomain": "@",
|
||||
"owner": {
|
||||
"repo": "https://github.com/open-domains/Register"
|
||||
},
|
||||
"record": {
|
||||
"TXT": [
|
||||
"v=spf1 -all"
|
||||
]
|
||||
},
|
||||
"proxy": false
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"$schema": "../schemas/domain.schema.json",
|
||||
"description": "Root domain",
|
||||
"domain": "localplayer.dev",
|
||||
"subdomain": "@",
|
||||
"owner": {
|
||||
"repo": "https://github.com/open-domains/Register"
|
||||
},
|
||||
"record": {
|
||||
"TXT": [
|
||||
"v=spf1 -all"
|
||||
],
|
||||
"A": [
|
||||
"185.199.108.153",
|
||||
"185.199.109.153",
|
||||
"185.199.110.153",
|
||||
"185.199.111.153"
|
||||
],
|
||||
"AAAA": [
|
||||
"2606:50c0:8000::153",
|
||||
"2606:50c0:8001::153",
|
||||
"2606:50c0:8002::153",
|
||||
"2606:50c0:8003::153"
|
||||
]
|
||||
},
|
||||
"proxy": false
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"$schema": "../../schemas/domain.schema.json",
|
||||
"description": "DKIM record",
|
||||
"domain": "is-an.app",
|
||||
"subdomain": "*._domainkey",
|
||||
"owner": {
|
||||
"repo": "https://github.com/open-domains/Register"
|
||||
},
|
||||
"record": {
|
||||
"TXT": [
|
||||
"v=DKIM1; p="
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"$schema": "../../schemas/domain.schema.json",
|
||||
"description": "DKIM record",
|
||||
"domain": "1bt.uk",
|
||||
"subdomain": "*._domainkey",
|
||||
"owner": {
|
||||
"repo": "https://github.com/open-domains/Register"
|
||||
},
|
||||
"record": {
|
||||
"TXT": [
|
||||
"v=DKIM1; p="
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"$schema": "../../schemas/domain.schema.json",
|
||||
"description": "DMARC record",
|
||||
"domain": "is-an.app",
|
||||
"subdomain": "_dmarc",
|
||||
"owner": {
|
||||
"repo": "https://github.com/open-domains/Register"
|
||||
},
|
||||
"record": {
|
||||
"TXT": [
|
||||
"v=DMARC1; p=reject; sp=reject; adkim=s; aspf=s;"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"$schema": "../../schemas/domain.schema.json",
|
||||
"description": "DMARC record",
|
||||
"domain": "1bt.uk",
|
||||
"subdomain": "_dmarc",
|
||||
"owner": {
|
||||
"repo": "https://github.com/open-domains/Register"
|
||||
},
|
||||
"record": {
|
||||
"TXT": [
|
||||
"v=DMARC1; p=reject; sp=reject; adkim=s; aspf=s;"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,398 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"$schema": {
|
||||
"type": "string",
|
||||
"description": "Path to the schema file"
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"minLength": 4
|
||||
},
|
||||
"domain": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"1bt.uk",
|
||||
"is-an.app"
|
||||
]
|
||||
},
|
||||
"subdomain": {
|
||||
"type": "string",
|
||||
"pattern": "^([a-z0-9_*.-]{2,64}|@)$",
|
||||
"not": {
|
||||
"enum": [
|
||||
"*",
|
||||
"a11y",
|
||||
"about",
|
||||
"account",
|
||||
"accounts",
|
||||
"ad",
|
||||
"ads",
|
||||
"admin",
|
||||
"admins",
|
||||
"answer",
|
||||
"answers",
|
||||
"api",
|
||||
"apis",
|
||||
"app",
|
||||
"apps",
|
||||
"archive",
|
||||
"archives",
|
||||
"array",
|
||||
"arrays",
|
||||
"asm",
|
||||
"async",
|
||||
"awesome",
|
||||
"backup",
|
||||
"backups",
|
||||
"base",
|
||||
"basic",
|
||||
"basics",
|
||||
"blog",
|
||||
"blogs",
|
||||
"book",
|
||||
"books",
|
||||
"bot",
|
||||
"bots",
|
||||
"browser",
|
||||
"browsers",
|
||||
"bug",
|
||||
"bugs",
|
||||
"build",
|
||||
"builds",
|
||||
"business",
|
||||
"career",
|
||||
"cdn",
|
||||
"center",
|
||||
"chat",
|
||||
"chats",
|
||||
"client",
|
||||
"clients",
|
||||
"cloud",
|
||||
"code",
|
||||
"company",
|
||||
"console",
|
||||
"contact",
|
||||
"contacts",
|
||||
"cookie",
|
||||
"cookies",
|
||||
"copyright",
|
||||
"copyrights",
|
||||
"core",
|
||||
"css",
|
||||
"data",
|
||||
"db",
|
||||
"ddns",
|
||||
"deal",
|
||||
"debug",
|
||||
"demo",
|
||||
"demos",
|
||||
"dev",
|
||||
"devs",
|
||||
"develop",
|
||||
"developer",
|
||||
"developers",
|
||||
"dir",
|
||||
"dirs",
|
||||
"dns",
|
||||
"doc",
|
||||
"docs",
|
||||
"domain",
|
||||
"domains",
|
||||
"donate",
|
||||
"dyn",
|
||||
"ecma",
|
||||
"editor",
|
||||
"email",
|
||||
"emails",
|
||||
"es2015",
|
||||
"faq",
|
||||
"faqs",
|
||||
"feed",
|
||||
"file",
|
||||
"find",
|
||||
"free",
|
||||
"front",
|
||||
"ftp",
|
||||
"function",
|
||||
"functions",
|
||||
"fund",
|
||||
"funds",
|
||||
"game",
|
||||
"games",
|
||||
"get",
|
||||
"git",
|
||||
"global",
|
||||
"globals",
|
||||
"group",
|
||||
"groups",
|
||||
"headquarter",
|
||||
"help",
|
||||
"home",
|
||||
"homepage",
|
||||
"host",
|
||||
"hq",
|
||||
"html",
|
||||
"i18n",
|
||||
"imap",
|
||||
"index",
|
||||
"info",
|
||||
"io",
|
||||
"js",
|
||||
"json",
|
||||
"l10n",
|
||||
"legal",
|
||||
"legals",
|
||||
"libraries",
|
||||
"lib",
|
||||
"license",
|
||||
"licenses",
|
||||
"like",
|
||||
"link",
|
||||
"live",
|
||||
"log",
|
||||
"logs",
|
||||
"login",
|
||||
"logo",
|
||||
"logos",
|
||||
"logout",
|
||||
"loop",
|
||||
"love",
|
||||
"mail",
|
||||
"main",
|
||||
"map",
|
||||
"maps",
|
||||
"market",
|
||||
"master",
|
||||
"media",
|
||||
"meet",
|
||||
"member",
|
||||
"members",
|
||||
"mobile",
|
||||
"mobiles",
|
||||
"mx",
|
||||
"my",
|
||||
"native",
|
||||
"net",
|
||||
"network",
|
||||
"now",
|
||||
"ns",
|
||||
"ns1",
|
||||
"ns2",
|
||||
"online",
|
||||
"open",
|
||||
"orig",
|
||||
"origin",
|
||||
"page",
|
||||
"pages",
|
||||
"password",
|
||||
"passwords",
|
||||
"permalink",
|
||||
"permalinks",
|
||||
"plain",
|
||||
"pop3",
|
||||
"portal",
|
||||
"portals",
|
||||
"pub",
|
||||
"pubs",
|
||||
"raw",
|
||||
"readme",
|
||||
"regex",
|
||||
"register",
|
||||
"registration",
|
||||
"remote",
|
||||
"rest",
|
||||
"root",
|
||||
"roots",
|
||||
"rss",
|
||||
"run",
|
||||
"script",
|
||||
"scripts",
|
||||
"secure",
|
||||
"serv",
|
||||
"server",
|
||||
"servers",
|
||||
"service",
|
||||
"services",
|
||||
"shop",
|
||||
"shops",
|
||||
"site",
|
||||
"sites",
|
||||
"smtp",
|
||||
"socket",
|
||||
"source",
|
||||
"sources",
|
||||
"ssh",
|
||||
"standard",
|
||||
"standards",
|
||||
"store",
|
||||
"stores",
|
||||
"sub",
|
||||
"subs",
|
||||
"subdomain",
|
||||
"subdomains",
|
||||
"subscribe",
|
||||
"support",
|
||||
"sync",
|
||||
"system",
|
||||
"systems",
|
||||
"tag",
|
||||
"tags",
|
||||
"team",
|
||||
"teams",
|
||||
"tech",
|
||||
"terminal",
|
||||
"test",
|
||||
"this",
|
||||
"that",
|
||||
"tip",
|
||||
"tool",
|
||||
"tools",
|
||||
"topic",
|
||||
"topics",
|
||||
"translate",
|
||||
"trend",
|
||||
"trends",
|
||||
"trick",
|
||||
"tricks",
|
||||
"trust",
|
||||
"trusted",
|
||||
"tutorial",
|
||||
"tutorials",
|
||||
"tweak",
|
||||
"tweaks",
|
||||
"type",
|
||||
"types",
|
||||
"unit",
|
||||
"units",
|
||||
"united",
|
||||
"unsubscribe",
|
||||
"uri",
|
||||
"uris",
|
||||
"url",
|
||||
"urls",
|
||||
"user",
|
||||
"users",
|
||||
"util",
|
||||
"utils",
|
||||
"utility",
|
||||
"validate",
|
||||
"var",
|
||||
"vars",
|
||||
"virtual",
|
||||
"vpn",
|
||||
"vps",
|
||||
"wasm",
|
||||
"watch",
|
||||
"web",
|
||||
"webmail",
|
||||
"webmaster",
|
||||
"world",
|
||||
"ww",
|
||||
"ww1",
|
||||
"ww2",
|
||||
"ww3",
|
||||
"www",
|
||||
"www1",
|
||||
"www2",
|
||||
"www3",
|
||||
"xml"
|
||||
]
|
||||
}
|
||||
},
|
||||
"owner": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"repo": {
|
||||
"type": "string",
|
||||
"description": "Path to the github repository"
|
||||
},
|
||||
"email": {
|
||||
"type": "string",
|
||||
"description": "Email address"
|
||||
}
|
||||
}
|
||||
},
|
||||
"record": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"TXT": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"maxLength": 255
|
||||
}
|
||||
},
|
||||
"A": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"pattern": "^((25[0-5]|(2[0-4]|1\\d|[1-9]|)\\d)\\.?\\b){4}$"
|
||||
}
|
||||
},
|
||||
"AAAA": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"pattern": "^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?[0-9])?[0-9])\\.){3}(25[0-5]|(2[0-4]|1?[0-9])?[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?[0-9])?[0-9])\\.){3}(25[0-5]|(2[0-4]|1?[0-9])?[0-9]))$"
|
||||
}
|
||||
},
|
||||
"CNAME": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"pattern": "^[a-z0-9_./-]*\\.$"
|
||||
},
|
||||
"NS": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"pattern": "^[a-z0-9._-]{3,}$"
|
||||
}
|
||||
}
|
||||
},
|
||||
"anyOf": [
|
||||
{
|
||||
"required": [
|
||||
"TXT"
|
||||
]
|
||||
},
|
||||
{
|
||||
"required": [
|
||||
"A"
|
||||
]
|
||||
},
|
||||
{
|
||||
"required": [
|
||||
"AAAA"
|
||||
]
|
||||
},
|
||||
{
|
||||
"required": [
|
||||
"CNAME"
|
||||
]
|
||||
},
|
||||
{
|
||||
"required": [
|
||||
"NS"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"proxy": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"$schema",
|
||||
"description",
|
||||
"domain",
|
||||
"subdomain",
|
||||
"record"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square150x150logo src="/favicon/mstile-150x150.png"/>
|
||||
<TileColor>#da532c</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
</browserconfig>
|
||||
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="161.000000pt" height="161.000000pt" viewBox="0 0 161.000000 161.000000"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
<metadata>
|
||||
Created by potrace 1.14, written by Peter Selinger 2001-2017
|
||||
</metadata>
|
||||
<g transform="translate(0.000000,161.000000) scale(0.100000,-0.100000)"
|
||||
fill="#000000" stroke="none">
|
||||
<path d="M748 1439 c-242 -26 -457 -195 -532 -421 -112 -333 57 -682 392 -806
|
||||
138 -51 351 -38 482 29 78 40 107 61 172 126 72 70 109 127 144 218 35 93 35
|
||||
95 40 205 11 276 -157 520 -423 617 -37 13 -94 26 -128 29 -33 3 -64 6 -70 8
|
||||
-5 1 -40 -1 -77 -5z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 770 B |
@@ -0,0 +1,165 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<title>A free subdomain for developers on the web</title>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<link rel="preconnect" href="https://fonts.bunny.net">
|
||||
<link href="https://fonts.bunny.net/css?family=source-sans-pro:400,700" rel="stylesheet" />
|
||||
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="favicon/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="favicon/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="favicon/favicon-16x16.png">
|
||||
<!-- <link rel="manifest" href="webmanifest.json">-->
|
||||
<link rel="mask-icon" href="favicon/safari-pinned-tab.svg" color="#5bbad5">
|
||||
|
||||
<style>
|
||||
:root {
|
||||
--color-bg-primary: #fff;
|
||||
--color-bg-secondary: #00a6d5;
|
||||
--color-bg-inverted: #151515;
|
||||
--color-text-primary: #151515;
|
||||
--color-text-inverted: #fff;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--color-bg-primary: #2f2f2f;
|
||||
--color-bg-secondary: #3bc1e1;
|
||||
--color-bg-inverted: #fff;
|
||||
--color-text-primary: #fff;
|
||||
--color-text-inverted: #2f2f2f;
|
||||
}
|
||||
}
|
||||
|
||||
body, html {
|
||||
background-color: var(--color-bg-primary);
|
||||
color: var(--color-text-primary);
|
||||
font-family: 'Source Sans Pro', Arial, Helvetica, sans-serif;
|
||||
font-size: 16px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
body {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
main {
|
||||
width: 800px;
|
||||
}
|
||||
|
||||
header {
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
||||
.url-example {
|
||||
position: relative;
|
||||
background-color: var(--color-bg-secondary);
|
||||
color: var(--color-text-inverted);
|
||||
padding: 10px 20px;
|
||||
font-weight: 700;
|
||||
font-size: 3em;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.url-example:after {
|
||||
position: absolute;
|
||||
content: "";
|
||||
top: 0;
|
||||
width: 1.65em;
|
||||
height: 1.65em;
|
||||
right: -0.825em;
|
||||
transform: scale(0.3, 0.707) rotate(45deg);
|
||||
z-index: -1;
|
||||
background-color: var(--color-bg-secondary);
|
||||
}
|
||||
|
||||
p.large {
|
||||
font-size: 1.7em;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 1.4em;
|
||||
font-weight: 400;
|
||||
padding: 1em 0 0 0;
|
||||
margin: 0;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
p.small {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--color-bg-secondary);
|
||||
}
|
||||
|
||||
@media (max-width: 800px) {
|
||||
main {
|
||||
padding: 0 30px;
|
||||
}
|
||||
|
||||
.url-example {
|
||||
font-size: 1.6em;
|
||||
padding: 6px 10px;
|
||||
}
|
||||
|
||||
p.large {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
p.small {
|
||||
font-size: .8em;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
<header>
|
||||
<span class="url-example">https://<span class="typed"></span>.is-an.app</span>
|
||||
</header>
|
||||
<article>
|
||||
<p class="large">
|
||||
Are you a developer exploring an awesome domain name for your application, personal website, or project?
|
||||
You came to the right place!
|
||||
</p>
|
||||
<p>
|
||||
This service offers a handy subdomain service for you to have a subdomain via <strong>CNAME</strong>,
|
||||
<strong>A</strong>, <strong>AAAA</strong>, or <strong>NS</strong> DNS records.
|
||||
In limited cases, you can use a wildcard subdomain.
|
||||
</p>
|
||||
<p>
|
||||
Fork the <a href="https://github.com/tarampampam/free-domains">repository</a>, add a subdomain, and send a <a
|
||||
href="https://github.com/tarampampam/free-domains/pulls" target="_parent">Pull Request</a>. We will make it
|
||||
work!
|
||||
</p>
|
||||
<p class="small">
|
||||
Crafted with ❤ by <a href="https://github.com/tarampampam">@tarampampam</a>
|
||||
</p>
|
||||
</article>
|
||||
</main>
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/typed.js/2.0.12/typed.min.js"
|
||||
integrity="sha512-3J8teBiHrSyaaRBajZyIEtpDsXdPq1gsznKWIVb5CnorQuFhjWGhWe54z8YNnHHr7MZuExb9m5kvf964HiT1Sw=="
|
||||
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
<script>
|
||||
new Typed('.typed', { // https://github.com/mattboldt/typed.js
|
||||
strings: ['example', 'foo', '4free', 'your'],
|
||||
typeSpeed: 140,
|
||||
backDelay: 2000,
|
||||
showCursor: false,
|
||||
loop: true,
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,4 @@
|
||||
User-agent: ia_archiver
|
||||
Disallow: /
|
||||
|
||||
User-agent: *
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"name": "",
|
||||
"short_name": "",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/favicon/android-chrome-144x144.png",
|
||||
"sizes": "144x144",
|
||||
"type": "image/png"
|
||||
}
|
||||
],
|
||||
"theme_color": "#ffffff",
|
||||
"background_color": "#ffffff",
|
||||
"display": "standalone"
|
||||
}
|
||||