From fda164e41f0dee1fec4a9fdb5cd7fa175166a0b7 Mon Sep 17 00:00:00 2001 From: andrewstech Date: Thu, 1 Dec 2022 18:14:48 +0000 Subject: [PATCH] Add files via upload --- LICENSE | 21 ++ README.md | 112 ++++++ dnsconfig.js | 98 +++++ domains/@.is-not-a.dev.json | 15 + domains/@.localplayer.dev.json | 27 ++ domains/service/dkim.is-not-a.dev.json | 14 + domains/service/dkim.localplayer.dev.json | 14 + domains/service/dmarc.is-not-a.dev.json | 14 + domains/service/dmarc.localplayer.dev.json | 14 + schemas/domain.schema.json | 398 +++++++++++++++++++++ web/browserconfig.xml | 9 + web/favicon.ico | Bin 0 -> 15086 bytes web/favicon/android-chrome-144x144.png | Bin 0 -> 11386 bytes web/favicon/apple-touch-icon.png | Bin 0 -> 12337 bytes web/favicon/favicon-16x16.png | Bin 0 -> 1294 bytes web/favicon/favicon-32x32.png | Bin 0 -> 2312 bytes web/favicon/mstile-150x150.png | Bin 0 -> 9654 bytes web/favicon/safari-pinned-tab.svg | 17 + web/index.html | 165 +++++++++ web/robots.txt | 4 + web/webmanifest.json | 14 + 21 files changed, 936 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 dnsconfig.js create mode 100644 domains/@.is-not-a.dev.json create mode 100644 domains/@.localplayer.dev.json create mode 100644 domains/service/dkim.is-not-a.dev.json create mode 100644 domains/service/dkim.localplayer.dev.json create mode 100644 domains/service/dmarc.is-not-a.dev.json create mode 100644 domains/service/dmarc.localplayer.dev.json create mode 100644 schemas/domain.schema.json create mode 100644 web/browserconfig.xml create mode 100644 web/favicon.ico create mode 100644 web/favicon/android-chrome-144x144.png create mode 100644 web/favicon/apple-touch-icon.png create mode 100644 web/favicon/favicon-16x16.png create mode 100644 web/favicon/favicon-32x32.png create mode 100644 web/favicon/mstile-150x150.png create mode 100644 web/favicon/safari-pinned-tab.svg create mode 100644 web/index.html create mode 100644 web/robots.txt create mode 100644 web/webmanifest.json diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e46ba3d --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) + +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. diff --git a/README.md b/README.md new file mode 100644 index 0000000..d72af94 --- /dev/null +++ b/README.md @@ -0,0 +1,112 @@ +
+ + + + +
+
+ +[![Tests Status][badge-tests]][actions] +[![Deploy Status][badge-deploy]][deploy] +
+ +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 `..json` in the `./domains` folder to register `` 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": "", + "domain": "", + "subdomain": "", + "owner": { + "repo": "", + "email": "" + }, + "record": { + "CNAME": "", + "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 diff --git a/dnsconfig.js b/dnsconfig.js new file mode 100644 index 0000000..a677310 --- /dev/null +++ b/dnsconfig.js @@ -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]) +} diff --git a/domains/@.is-not-a.dev.json b/domains/@.is-not-a.dev.json new file mode 100644 index 0000000..6cc3438 --- /dev/null +++ b/domains/@.is-not-a.dev.json @@ -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 +} diff --git a/domains/@.localplayer.dev.json b/domains/@.localplayer.dev.json new file mode 100644 index 0000000..5f5e4ad --- /dev/null +++ b/domains/@.localplayer.dev.json @@ -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 +} diff --git a/domains/service/dkim.is-not-a.dev.json b/domains/service/dkim.is-not-a.dev.json new file mode 100644 index 0000000..a22a78d --- /dev/null +++ b/domains/service/dkim.is-not-a.dev.json @@ -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=" + ] + } +} diff --git a/domains/service/dkim.localplayer.dev.json b/domains/service/dkim.localplayer.dev.json new file mode 100644 index 0000000..88ccbbe --- /dev/null +++ b/domains/service/dkim.localplayer.dev.json @@ -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=" + ] + } +} diff --git a/domains/service/dmarc.is-not-a.dev.json b/domains/service/dmarc.is-not-a.dev.json new file mode 100644 index 0000000..d035d67 --- /dev/null +++ b/domains/service/dmarc.is-not-a.dev.json @@ -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;" + ] + } +} diff --git a/domains/service/dmarc.localplayer.dev.json b/domains/service/dmarc.localplayer.dev.json new file mode 100644 index 0000000..df36971 --- /dev/null +++ b/domains/service/dmarc.localplayer.dev.json @@ -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;" + ] + } +} diff --git a/schemas/domain.schema.json b/schemas/domain.schema.json new file mode 100644 index 0000000..d3a70ac --- /dev/null +++ b/schemas/domain.schema.json @@ -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" + ] +} diff --git a/web/browserconfig.xml b/web/browserconfig.xml new file mode 100644 index 0000000..70cb989 --- /dev/null +++ b/web/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #da532c + + + diff --git a/web/favicon.ico b/web/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a09508927bb52d24d3f66a09c2f21fd90694c469 GIT binary patch literal 15086 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 literal 0 HcmV?d00001 diff --git a/web/favicon/apple-touch-icon.png b/web/favicon/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..903e14be91d525bf6ee6eab6bf1d70a17f4d1528 GIT binary patch literal 12337 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 + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + diff --git a/web/index.html b/web/index.html new file mode 100644 index 0000000..8449404 --- /dev/null +++ b/web/index.html @@ -0,0 +1,165 @@ + + + + + + A free subdomain for developers on the web + + + + + + + + + + + + + +
+
+ https://.is-an.app +
+
+

+ Are you a developer exploring an awesome domain name for your application, personal website, or project? + You came to the right place! +

+

+ This service offers a handy subdomain service for you to have a subdomain via CNAME, + A, AAAA, or NS DNS records. + In limited cases, you can use a wildcard subdomain. +

+

+ Fork the repository, add a subdomain, and send a Pull Request. We will make it + work! +

+

+ Crafted with ❤ by @tarampampam +

+
+
+ + + + + diff --git a/web/robots.txt b/web/robots.txt new file mode 100644 index 0000000..bfa9a31 --- /dev/null +++ b/web/robots.txt @@ -0,0 +1,4 @@ +User-agent: ia_archiver +Disallow: / + +User-agent: * diff --git a/web/webmanifest.json b/web/webmanifest.json new file mode 100644 index 0000000..634e07a --- /dev/null +++ b/web/webmanifest.json @@ -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" +}