Merge branch 'main' into main

This commit is contained in:
BLCXD authored and GitHub committed 2026-05-06 10:30:00 +02:00
commit c3dbb724e2
13804 files changed
+106443 -42729

No files matched your search

-6
View File
@@ -1,6 +0,0 @@
DOMAIN_USER=username
DOMAIN_API_KEY=apikey
DOMAIN_API_HOST=api-example.com
DOMAIN_API_PORT=2087
DOMAIN_DOMAIN=example.com
DOMAIN_HOST_IP=69.69.69.69
-1
View File
@@ -1 +0,0 @@
use_nix
-31
View File
@@ -1,31 +0,0 @@
{
"extends": [
"eslint:recommended",
"plugin:node/recommended",
"plugin:json/recommended"
],
"parserOptions": {
"ecmaVersion": 2020
},
"rules": {
"indent": ["error", 2],
"max-len": ["error", {
"code": 100,
"ignoreStrings": true,
"ignoreTemplateLiterals": true,
"ignoreTrailingComments": true
}],
"node/exports-style": ["error", "module.exports"],
"node/file-extension-in-import": ["error", "always"],
"node/prefer-global/buffer": ["error", "always"],
"node/prefer-global/console": ["error", "always"],
"node/prefer-global/process": ["error", "always"],
"node/prefer-global/url-search-params": ["error", "always"],
"node/prefer-global/url": ["error", "always"],
"node/prefer-promises/dns": "error",
"node/prefer-promises/fs": "error",
"no-process-exit": [0],
"node/no-unsupported-features/node-builtins": [0],
"node/no-unsupported-features/es-syntax": [0]
}
}
+2 -2
View File
@@ -1,4 +1,4 @@
* @phenax
* @wdhdev
domains/ @is-a-dev/maintainers
/domains/ @is-a-dev/maintainers
*.md @is-a-dev/maintainers
-2
View File
@@ -1,2 +0,0 @@
custom: ["https://www.paypal.me/phenax", "https://www.buymeacoffee.com/phenax"]
liberapay: phenax
+3 -5
View File
@@ -1,14 +1,12 @@
---
name: bug
about: Use this template to report any bugs you've encountered related to the project
title: 'What bug did you encounter?'
title: "What bug did you encounter?"
labels: bug
---
### Your subdomain
### Expected outcome
### Observed outcome
+2 -4
View File
@@ -1,10 +1,8 @@
---
name: question
about: Use this template to ask any questions about the service
title: 'Whats your question'
title: "Whats your question"
labels: question
---
You can elaborate here
### Your question
+5 -4
View File
@@ -1,13 +1,14 @@
---
name: report-abuse
about: Use this template to report abusive domains
title: 'Report abuse'
title: "Report abuse"
labels: report-abuse
---
Domain you want to report:
### Domain
### Reason
Explain why you think this domain is being abused
<!-- Explain why you think this domain is being abused -->
### Proof
<!-- Proof of the domain being abused -->
+2 -2
View File
@@ -1,8 +1,8 @@
---
name: suggestion
about: Use this template for feedbacks and suggestions
title: 'Feedback/suggestion'
title: "Feedback/suggestion"
labels: suggestion
---
### What do you want added?
+3 -5
View File
@@ -1,12 +1,10 @@
---
name: support
about: Use this template if you need any support with your domain
title: 'Support'
title: "Support"
labels: support
---
Your domain name:
Explain any issues you are facing
### Your subdomain
### The issue
+17 -11
View File
@@ -1,15 +1,21 @@
## Requirements
Unless explicitly specified otherwise by a **maintainer** or in the requirement description, your domain must pass **ALL** the indicated requirements above.
<!--
YOU MUST FILL OUT THIS TEMPLATE FOR YOUR PR TO BE ACCEPTED!
-->
Please note that we reserve the rights not to accept any domain at our own discretion.
# Requirements
<!-- Your domain MUST pass ALL the requirements below, otherwise it WILL BE DENIED. -->
<!-- Change each checkbox to [x] (all lowercase, with no spaces between the brackets) to mark it as completed. -->
- [ ] The file is in the `domains` folder and is in the JSON format.
- [ ] You have completed your website. <!-- This is not required if the domain you're registering is for emails. -->
- [ ] The website is reachable. <!-- This is not required if the domain you're registering is for emails. -->
- [ ] You're not using Vercel or Netlify. <!-- This is not required if you're using an URL record. -->
- [ ] The CNAME record doesn't contain `https://` or `/`. <!-- This is not required if you are not using a CNAME record. -->
- [ ] There is sufficient information at the `owner` field. <!-- You need to have your email presented at `email` field. If you don't want to provide your email for any reason, you can specify another social platform (e.g. Discord or Twitter) so we can contact you. -->
- [ ] I **agree** to the [Terms of Service](https://is-a.dev/terms). <!-- Your request MUST follow the TOS to be approved. -->
- [ ] My file is following the [domain structure](https://docs.is-a.dev/domain-structure/). <!-- Your JSON file is in the domains directory, the name is valid, etc. -->
- [ ] My website is **reachable** and **completed**. <!-- We do not permit simple "Hello, world!" or simply copied template websites with minimal changes. -->
- [ ] My website is **software development** related. <!-- Only your root subdomain needs to meet this requirement. -->
- [ ] My website is **not for commercial use**. <!-- Your website's purpose should not be to generate any form of revenue or profit. -->
- [ ] I have provided contact information in the `owner` key. <!-- Provide your email in the `email` field or another platform (e.g. X/Twitter or Discord) for contact. -->
- [ ] I have provided a preview of my website below. <!-- This step is required for your PR to be approved. -->
# Website Preview
<!-- Provide a link AND screenshot of your website below. if not provided your PR will be closed with no questions asked. -->
## Website Link/Preview
<!-- Please provide a link or preview of your website below. -->
# Website Purpose
<!-- Please tell us the purpose or motive behind your website. For example, it is a portfolio website, etc. -->
+79
View File
@@ -0,0 +1,79 @@
# GitHub Copilot Instructions for is-a-dev/register
## Repository Purpose
This repository handles pull requests that register new `.is-a.dev` subdomains. Every PR adds or modifies **only** JSON files in the `domains/` directory. These files define DNS records.
Copilot must review **every PR** with these priorities:
1. The PR description **must** exactly match and fully complete the `.github/PULL_REQUEST_TEMPLATE.md`
2. Every JSON file must follow the exact filename rules, JSON schema, and validation rules from https://docs.is-a.dev/domain-structure/
3. If anything is wrong in the PR description **or** any JSON file, post a clear comment using the exact copy-pasta error messages (or very close variations that match the style). Be direct and helpful.
4. Only comment on real issues. Do not approve the PR if any errors exist.
## PR Description / Template Check (Critical)
(unchanged from previous version — keep the same checks and copy-pasta for incomplete template, no preview, inaccessible site, etc.)
## Filename Rules (Strict)
Files **must** be in the `domains/` directory and follow these exact rules:
- Must end in `.json`
- All lowercase letters only (no uppercase anywhere)
- Alphanumeric + dashes/underscores only (no consecutive dashes)
- Filenames (without `.json`) **cannot** match any entry in `util/reserved.json`
Reserved names are listed in `util/reserved.json`. These subdomain names may NOT be registered.
**Invalid filename errors to use verbatim:**
- "File does not end in .json. Make sure the file extension is correct. Reopen this PR when you have this corrected."
- "File is not in the correct directory. Must be in the domains directory. Reopen this PR when you have this corrected."
- "Filenames cannot have uppercase characters. See docs for more information: https://docs.is-a.dev/"
- "Filename is reserved. See util/reserved.json for the full list. Reopen this PR when you have this corrected."
## JSON Schema & Validation Rules (Updated & Expanded)
Every file must be valid JSON and follow this exact structure from https://docs.is-a.dev/domain-structure/:
```json
{
"owner": {
"username": "exact-github-username-of-pr-author",
"email": "optional@email.com"
},
"records": {
// record types here
}
}
```
**Critical rules (enforce strictly):**
- `"owner"."username"` **MUST** exactly match the GitHub username of the person who opened the PR, **unless** the PR author is a trusted maintainer listed in `util/trusted.json`.
Trusted maintainers: STICKnoLOGIC, DEV-DIBSTER, iostpa, orangci, Stef-00012, satr14washere, wdhdev.
- `"records"` is required (note: it must be `"records"`, never `"record"`).
- **CNAME records cannot be used with any other records and vice versa.** Only one record type is allowed if CNAME is present.
- **A records must be an array of strings** (never a single string, object, or scalar value). Example: `"A": ["192.0.2.1"]`
- A records **cannot** contain public DNS resolver IPs (Cloudflare, Google, Quad9, OpenDNS, etc.). Prohibited examples: 1.1.1.1, 1.1.1.2, 1.0.0.1, 8.8.8.8, 8.8.4.4, 9.9.9.9, 149.112.112.112, 208.67.222.222, 208.67.220.220.
- CNAME must be a single lowercase string (no protocols, no paths, no query parameters, no arrays).
- TXT verification records must be paired correctly (separate `_vercel.*.json` for Vercel, proper TXT for GitHub Pages).
- Other record types (AAAA, MX, NS, etc.) must follow the exact array/object formats shown in the docs.
**Use these exact (or matching-style) error messages:**
- "File does not follow proper schema. See docs for more information: https://docs.is-a.dev/"
- "This should be `records` not `record`."
- "Cannot use CNAME in conjunction with other records and vice versa. See docs for more information: https://docs.is-a.dev/"
- "A records must be placed within an array. Example: \"A\": [\"192.0.2.1\"]. Reopen this PR when fixed."
- "A records cannot use public DNS resolver IPs (1.1.1.1, 8.8.8.8, 9.9.9.9, etc.). Reopen this PR when fixed."
- "Invalid username, username does not match the GitHub account that is opening the pull request. See docs for more information: https://docs.is-a.dev/ (trusted maintainers exempt — see util/trusted.json)"
- "Invalid CNAME. CNAME cannot contain protocols, file paths, URL parameters, or anything combination of those. CNAME records must be lowercased. See docs for more information: https://docs.is-a.dev/ Reopen PR when this is fixed."
- All previous verification, JSON, and socials copy-pasta remain valid.
## Verification-Specific Guidance
## General Review Style
- Be concise and use the exact copy-pasta messages whenever they match the issue.
- Always link back to https://docs.is-a.dev/ or the specific guide.
- If the site has "Little content provided" → use the existing copy-pasta.
- For new rule violations, use the exact phrasing above so maintainers instantly recognize the feedback.
- Suggest reopening the PR after fixes.
- You may add a short polite note around the copy-pasta, but keep the core error verbatim.
- Do not approve or merge any PR that has errors.
Follow these instructions on every PR review. This ensures full consistency with the automated tests in `/tests`, the reserved/trusted lists, and maintainer expectations.
-6
View File
@@ -1,6 +0,0 @@
domain:
- domains/*.json
documentation:
- ./*.md
- ./**/*.md
-26
View File
@@ -1,26 +0,0 @@
name: Helper
on:
pull_request:
types:
- closed
jobs:
instructions:
name: instructions
runs-on: ubuntu-latest
steps:
- run: curl https://notify-api.is-a.dev/pr/merged/${{ github.event.pull_request.number }}
if: github.event.action == 'closed' && github.event.pull_request.merged == true
# - uses: actions/checkout@v2
# - name: Comment
# if: github.event.action == 'closed' && github.event.pull_request.merged == true
# uses: actions/github-script@v3
# with:
# github-token: ${{secrets.GITHUB_TOKEN}}
# script: |
# const { hasLabel } = require(`${process.env.GITHUB_WORKSPACE}/scripts/action-utils.js`);
# const { instructions } = require(`${process.env.GITHUB_WORKSPACE}/scripts/reply.js`);
# if (hasLabel(context, 'domain'))
# console.log('Domain');
# await instructions(context, github);
-16
View File
@@ -1,16 +0,0 @@
name: Checks
on: [pull_request, workflow_dispatch]
jobs:
validation:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 0
- uses: oven-sh/setup-bun@v1
with:
bun-version: 1.0.3
- run: bun install
- run: bun test
+52
View File
@@ -0,0 +1,52 @@
name: CI
on:
pull_request:
push:
branches: [main]
paths:
- "domains/*"
- "tests/*"
- "util/*"
- ".github/workflows/ci.yml"
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-ci
jobs:
tests:
name: Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: npm install
- name: Fetch PR information
if: github.event_name == 'pull_request'
run: |
echo "PR_AUTHOR=${{ github.event.pull_request.user.login }}" >> $GITHUB_ENV
echo "PR_AUTHOR_ID=${{ github.event.pull_request.user.id }}" >> $GITHUB_ENV
LABELS=$(gh api --jq '[.labels[].name]' /repos/{owner}/{repo}/pulls/${{ github.event.number }})
echo "PR_LABELS=$LABELS" >> $GITHUB_ENV
FILES=$(gh api --jq '[.[] | select(.status != "removed") | .filename]' /repos/{owner}/{repo}/pulls/${{ github.event.number }}/files)
echo "CHANGED_FILES=$FILES" >> $GITHUB_ENV
REMOVED_FILE_DATA=$(gh api --jq '[.[] | select(.status == "removed") | {name: .filename, data: .patch}]' /repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/files)
echo "DELETED_FILES=$REMOVED_FILE_DATA" >> $GITHUB_ENV
env:
GH_TOKEN: ${{ github.token }}
- name: Run DNSControl tests
if: github.event_name == 'pull_request' && contains(fromJson(env.CHANGED_FILES), 'dnsconfig.js')
uses: is-a-dev/dnscontrol-action@main
with:
args: check
- name: Run tests
run: npx ava tests/*.test.js --timeout=1m
+24
View File
@@ -0,0 +1,24 @@
name: DNSControl
on:
push:
branches: [main]
paths:
- ".github/workflows/dnscontrol.yml"
- "dnsconfig.js"
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-dnscontrol
jobs:
tests:
name: Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: is-a-dev/dnscontrol-action@main
with:
args: check
-13
View File
@@ -1,13 +0,0 @@
name: Pull Request Labeler
on:
schedule:
- cron: '*/10 * * * *'
jobs:
labeler:
runs-on: ubuntu-latest
steps:
- uses: docker://docker.io/ilyam8/periodic-pr-labeler:v0.1.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REPOSITORY: ${{ github.repository }}
LABEL_MAPPINGS_FILE: .github/labeler.yml
-31
View File
@@ -1,31 +0,0 @@
name: Publish records
on:
push:
branches: [main]
workflow_dispatch:
name: 'Publish records'
jobs:
publish:
if: github.repository == 'is-a-dev/register'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: oven-sh/setup-bun@v1
with:
bun-version: 1.0.3
- run: bun install
- run: bun test
- name: Publishing records
env:
CI: 1
NODE_ENV: production
ENV: production
DOMAIN_USER: ${{ secrets.DOMAIN_USER }}
DOMAIN_API_KEY: ${{ secrets.DOMAIN_API_KEY }}
DOMAIN_API_HOST: ${{ secrets.DOMAIN_API_HOST }}
DOMAIN_API_PORT: ${{ secrets.DOMAIN_API_PORT }}
DOMAIN_DOMAIN: ${{ secrets.DOMAIN_DOMAIN }}
DOMAIN_HOST_IP: ${{ secrets.DOMAIN_HOST_IP }}
run: bun run publish-records
+32
View File
@@ -0,0 +1,32 @@
name: Publish
on:
push:
branches: [main]
paths:
- "domains/*"
- ".github/workflows/publish.yml"
- "util/reserved.json"
- "dnsconfig.js"
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-publish
jobs:
dns:
name: DNS
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Generate creds.json
run: echo '{"cloudflare":{"TYPE":"CLOUDFLAREAPI","apitoken":"$CLOUDFLARE_API_TOKEN"}}' > ./creds.json
- name: Push DNS records
uses: is-a-dev/dnscontrol-action@main
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
with:
args: push
+45
View File
@@ -0,0 +1,45 @@
name: Raw API
on:
push:
branches: [main]
paths:
- "domains/*"
- ".github/workflows/raw-api.yml"
- "util/raw-api.js"
- "util/reserved.json"
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-raw-api
cancel-in-progress: true
jobs:
update:
name: Update
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: 20.x
- name: Update Data
run: node util/raw-api.js
- name: Create CNAME
run: echo "raw.is-a.dev" > raw-api/CNAME
- name: Commit
uses: cpina/github-action-push-to-another-repository@main
with:
source-directory: "raw-api"
destination-github-username: is-a-dev
destination-repository-name: raw-api
user-email: "actions@github.com"
user-name: "GitHub Actions"
env:
API_TOKEN_GITHUB: ${{ secrets.BOT }}
+18 -17
View File
@@ -1,21 +1,22 @@
name: StaleBOT
name: Stale
on:
workflow_dispatch:
name: 'Force cleanup'
schedule:
- cron: "30 14 * * *"
schedule:
- cron: "0 12 * * *"
workflow_dispatch:
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 7
days-before-close: 14
stale-issue-message: 'This issue has been marked as stale due to inactivity and will be closed. Comment anything on this issue to prevent it'
stale-pr-message: 'This pull request has been marked as stale due to inactivity and will be closed. Comment anything on this PR to prevent it'
exempt-issue-labels: 'no-stale'
exempt-pr-labels: 'no-stale'
label:
name: Label
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v10
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 3
days-before-close: 2
stale-issue-message: "This issue has been marked as stale due to inactivity and will be closed. Comment anything on this issue to prevent it"
stale-pr-message: "This pull request has been marked as stale due to inactivity and will be closed. Comment anything on this PR to prevent it"
exempt-issue-labels: "no-stale"
exempt-pr-labels: "no-stale"
-69
View File
@@ -1,69 +0,0 @@
name: Wildcard temp record
on:
workflow_dispatch:
inputs:
recordcontent:
description: "Record Content"
required: true
default: "warning"
jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Generate JSON file
run: |
echo '{
"owner": {
"username": "is-a-dev",
"email": "hello@maintainers.is-a.dev"
},
"record": {
"TXT": "${{ github.event.inputs.recordcontent }}"
}
}' > ./domains/_acme-challenge.json
- name: test
run: cat domains/_acme-challenge.json
- uses: oven-sh/setup-bun@v1
with:
bun-version: 1.0.3
- run: bun install
- name: Publishing records
env:
CI: 1
NODE_ENV: production
ENV: production
DOMAIN_USER: ${{ secrets.DOMAIN_USER }}
DOMAIN_API_KEY: ${{ secrets.DOMAIN_API_KEY }}
DOMAIN_API_HOST: ${{ secrets.DOMAIN_API_HOST }}
DOMAIN_API_PORT: ${{ secrets.DOMAIN_API_PORT }}
DOMAIN_DOMAIN: ${{ secrets.DOMAIN_DOMAIN }}
DOMAIN_HOST_IP: ${{ secrets.DOMAIN_HOST_IP }}
run: bun run publish-records
- name: Sleep
run: sleep 10m
shell: bash
- name: Remove
run: rm domains/_acme-challenge.json
shell: bash
- name: removing records
env:
CI: 1
NODE_ENV: production
ENV: production
DOMAIN_USER: ${{ secrets.DOMAIN_USER }}
DOMAIN_API_KEY: ${{ secrets.DOMAIN_API_KEY }}
DOMAIN_API_HOST: ${{ secrets.DOMAIN_API_HOST }}
DOMAIN_API_PORT: ${{ secrets.DOMAIN_API_PORT }}
DOMAIN_DOMAIN: ${{ secrets.DOMAIN_DOMAIN }}
DOMAIN_HOST_IP: ${{ secrets.DOMAIN_HOST_IP }}
run: bun run publish-records
+133 -3
View File
@@ -1,4 +1,134 @@
node_modules/
*.env.production
# Logs
logs
*.log
is-a-dev-cert/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional stylelint cache
.stylelintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# vuepress v2.x temp and cache directory
.temp
.cache
# Docusaurus cache and generated files
.docusaurus
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
# Custom
.DS_Store
*.js
+2 -1
View File
@@ -4,8 +4,9 @@ This is a Code of Conduct for any interactions in this repository. This includes
- **Use common sense** - It's not that complicated. Just be nice to people.
- **Don't abuse the service** - This service is intended for developers to get a cleaner URL for their personal websites.
- **No wrongful use** - Do not use this service as a way, to promote hacking, scams, fraud, and other illegal activites.
- **Follow our TOS** - You must follow our [Terms of Service](https://github.com/is-a-dev/register/blob/main/TERMS_OF_SERVICE.md).
## Reporting abuse
If you believe a domain that has been registered using this service is abusing our terms, you can report it by creating an issue.
The abuse reports will be investigated and the necessary action will be taken.
Abuse reports will be investigated and the necessary action will be taken.
+2 -11
View File
@@ -1,17 +1,8 @@
# Contributing
When contributing to this repository, please first discuss the change you wish to make via issue before making a change.
You should also read up on this project's [code of conduct](https://github.com/is-a-dev/register/blob/main/CODE_OF_CONDUCT.md).
## Pull requests
- Adding, changing or removing a domain file you own.
- Fixing a bug in the scripts or CI.
- Fix an error in the documentation.
#### Domains
- Your pull request will be reviewed and merged into `main` branch.
- The records will be published as soon as the PR is merged.
- The changes should reflect soon after publishing.
- If the PR template is updated, any pre-existing PRs must follow the updated template, in order to be merged.
- We reserve the right to deny any pull request for any reason.
## Issues
- **Report an abusive domain** - Create a new issue with the label `report-abuse`.
-21
View File
@@ -1,21 +0,0 @@
FROM ubuntu:20.04
ENV TERM xterm
RUN ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime
RUN apt-get -y update
RUN apt-get install -y nodejs npm curl wget dnsutils certbot --fix-missing
RUN npm i -g n yarn && n 15.11
RUN node -v
WORKDIR /opt/app
COPY yarn.lock .
COPY package.json .
RUN yarn install
CMD ["sh", "-c", "cp -r node_modules code; cd code; tail -f /dev/null"]
+32 -47
View File
@@ -1,70 +1,55 @@
<!-- <p align="center">
<img alt="is-a.dev Banner" src="https://raw.githubusercontent.com/is-a-dev/register/main/media/banner.png">
</p> -->
<p align="center">
<img alt="is-a-dev Banner" src="https://raw.githubusercontent.com/is-a-dev/register/main/media/banner.png">
<img height="350" alt="is-a.dev Banner" src="https://raw.githubusercontent.com/is-a-dev/register/main/media/banner.png">
</p>
<p align="center">
<img alt="Domains" src="https://img.shields.io/github/directory-file-count/is-a-dev/register/domains?color=5c46eb&label=domains&style=for-the-badge">
<img alt="Open Pull Requests" src="https://img.shields.io/github/issues-raw/is-a-dev/register?color=5c46eb&label=issues&style=for-the-badge">
<img alt="Open Issues" src="https://img.shields.io/github/issues-pr-raw/is-a-dev/register?color=5c46eb&label=pull%20requests&style=for-the-badge">
<br>
</p>
<h1 align="center">is-a.dev</h1>
<p align="center"><strong>is-a-dev</strong> is a service that allows developers to get a sweet-looking ".is-a.dev" domain for their personal websites.</p>
<p align="center"><strong>is-a.dev</strong> is a service that allows developers to get a sweet-looking <code>.is-a.dev</code> subdomain for their personal websites.</p>
<p align="center">
<a href="https://discord.gg/PZCGHz4RhQ"><img alt="Discord Server" src="https://discord.com/api/guilds/830872854677422150/widget.png?style=banner2"></a>
</p>
---
## Issues
## Announcements
Please join our [Discord server](https://discord.gg/is-a-dev-830872854677422150) for announcements, service updates, and downtime notifications regarding the service.
If you have any problems then feel free to open a issue on github.
If you have an issue that contains confidental infomation then email hello@maintainers.is-a.dev any other emails will be ignored.
Not all announcements are posted on GitHub[^1], however they will always be posted in our Discord server.
## Register
[^1]: We only post announcements on GitHub in the case of a serious incident, which you'll see at the top of this README.
### Automated Registration
Easiest method: Use the [manage website](https://manage.is-a.dev), sign in with your GitHub account and click the register page in the navbar. Fill out some questions and it will all happen automatically!
# Register
> If you want a visual guide, check out [this blog post](https://blog.wharrison.com.au/2024/07/is-a-dev/).
Another method is to join our [Discord server](https://discord.gg/PZCGHz4RhQ), head to the commands channel and run `/register`. The bot will ask you a few questions then will generate your PR and domain automatically. The bot also allows for domain deletion and editing.
- [Fork](https://github.com/is-a-dev/register/fork) the repository.
- Follow the instructions on our [documentation](https://docs.is-a.dev).
- Once you open your pull request (PR), it will be reviewed. *Keep an eye on it in case changes are needed!*
- If changes have been requested, please make the specified changes otherwise **you will be rejected**.
- Once your PR is merged, your DNS records should be published with-in a few minutes.
- Enjoy your new `.is-a.dev` subdomain! Please consider leaving a star ⭐️ to help support us!
### Manual Registration
- [Fork](https://github.com/is-a-dev/register/fork) this repository.
- Add a new file called `your-domain-name.json` in the `domains` folder to register `your-domain-name.is-a.dev`.
- [Read the documentation](https://is-a.dev/docs).
- Your pull request will be reviewed and merged. *Make sure to keep an eye on it incase we need you to make any changes!*
- After the pull request is merged, please allow up to 24 hours for the changes to propagate.
- Enjoy your new `.is-a.dev` domain!
## Spam Pull Requests
With the recent rising of invalid PRs, including PRs generated with AI, we reserve the right to:
### CLI Registration
For issues with the CLI, **DO NOT OPEN AN ISSUE ON THIS REPOSITORY**, instead open an issue [here](https://github.com/wdhdev/is-a-dev-cli/issues/new).
- Close these PRs without explanation.
- Block or limit the author's ability to interact with is-a.dev's repositories and resources.
- Remove any existing domains owned by the author if connected to TOS-violating content.
Install the CLI:
## Report Abuse
If you find any subdomains being abused or breaking our TOS, please report them by [creating an issue](https://github.com/is-a-dev/register/issues/new?assignees=&labels=report-abuse&projects=&template=report-abuse.md&title=Report+abuse) with relevant evidence.
```bash
npm install @is-a-dev/cli -g
```
---
Login to the CLI:
We are supported by Cloudflare's [Project Alexandria](https://www.cloudflare.com/lp/project-alexandria) sponsorship program, we would not be able to operate without their help!
```bash
is-a-dev login
```
Register a subdomain on the CLI:
```
is-a-dev register
```
## Status
You can check the uptime of our services on our [status dashboard](https://status.is-a.dev).
### Similar Services
If you want to find services similar to is-a.dev, take a look on [free-for.life](https://free-for.life/#/?id=domains).
### Donate
If you like this project, please consider donating so we can keep this project running forever!
<a href="https://www.buymeacoffee.com/phenax" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/default-orange.png" alt="Buy Me a Coffee" height="28" width="119"></a>
<a href="https://liberapay.com/phenax" target="_blank"><img src="https://img.shields.io/badge/liberapay-donate-yellow.svg?style=for-the-badge" alt="Liberapay"></a>
<a href="https://www.cloudflare.com">
<img alt="Cloudflare Logo" src="https://raw.githubusercontent.com/is-a-dev/register/main/media/cloudflare.png" height="48">
</a>
+1 -3
View File
@@ -1,6 +1,4 @@
# Security Policy
## Reporting a vulnerability
You can report low severity bugs as [issues](https://github.com/is-a-dev/register/issues/new/choose) on this repo.
For higher severity vulnerabilities and bugs, please email the maintainers at [hello@maintainers.is-a.dev](mailto:hello@maintainers.is-a.dev).
Please report all vulnerabilities to admin@is-a.dev.
+83
View File
@@ -0,0 +1,83 @@
# Terms of Service
Welcome to **is-a.dev** ("our", "us", "we"), a free subdomain service provided to individuals. By using our service, you agree to the following Terms of Service ("Terms"). Please read them carefully.
For questions or concerns about these Terms, please contact us at admin@is-a.dev.
**Last Updated**: 27th October, 2025
## 1. Acceptance of Terms
By accessing or using is-a.dev, you acknowledge that you have read, understood, and agree to be bound by these Terms. If you do not agree, you may not use is-a.dev.
## 2. Eligibility
To use is-a.dev, you must:
1. Be at least 13 years old;
2. Be an individual or non-commercial project;
3. Use the service for lawful purposes only;
4. Provide accurate and truthful information when registering.
All subdomains must be registered to an individual GitHub account, organisations may not be the registered owner of a subdomain.
By using is-a.dev, you represent and warrant that you meet these requirements.
## 3. Service Description
is-a.dev allows users to register a subdomain under the "is-a.dev" domain. This service is offered "as-is" without guarantees of uptime, support, or permanence.
Subdomains are intended solely for individuals and non-commercial projects.
We reserve the right to deny any subdomain registration request for any reason.
## 4. Prohibited Activities
You agree not to use, attempt to use, or permit others to use the is-a.dev service or any related infrastructure for any of the following purposes:
1. Illegal activities
2. Degrading the service's performance or availability
3. Promoting violence or harm
4. Harassment, hate speech, or discrimination
5. Pornography or sexually explicit material
6. Impersonation and misrepresentation
7. Infringe third-party rights
8. Commercial, for-profit or political purposes
9. Unsolicited communications
10. Cryptocurrency and blockchain mining
11. Abusive automation
12. Proxy or VPN services
*Note: This list is not extensive and may be updated or expanded at any time at our discretion.*
Additionally, users must comply with [GitHub's Terms of Service](https://docs.github.com/en/site-policy/github-terms/github-terms-of-service) where applicable.
Violation of this section may result in immediate termination without notice.
## 5. Ownership and Intellectual Property
is-a.dev retains all rights, title, and interest in the "is-a.dev" domain and associated systems.
You retain ownership of any content you host on your subdomain. Your hosted content however must not infringe third-party rights.
You grant us permission to use your registration data to operate the service.
## 6. Termination of Service
We reserve the right to terminate your subdomain at any time, for any reason.
Termination may occur without prior notice. Any donations will not be refunded.
## 7. Privacy
For privacy-related inquiries, please contact us at admin@is-a.dev. We are not responsible for any data or privacy breaches resulting from the use of our service.
We do not collect or process personal data beyond what is necessary to operate the service.
## 8. Disclaimer and Limitation of Liability
The is-a.dev service is provided "as-is" and "as available." We make no warranties, expressed or implied, regarding the service's functionality, reliability, or suitability for any particular purpose.
You use the service at your own risk.
## 9. Indemnification
You agree to indemnify and hold harmless is-a.dev, its operators, and affiliates from any claims, losses, liabilities, or expenses arising from your use of the service or violation of these Terms.
## 10. Governing Law and Jurisdiction
These Terms are governed by the laws of Australia.
## 11. Modification of Terms
We reserve the right to update or modify these Terms at any time. Changes will be effective immediately upon posting. Your continued use of the service constitutes acceptance of the updated Terms.
If changes are made, we will notify users by posting them on our website or Discord server.
BIN
View File
Binary file not shown.
-15
View File
@@ -1,15 +0,0 @@
{ nixpkgs ? import <nixpkgs> {} }:
let
inherit (nixpkgs) pkgs;
nixPackages = with pkgs; [
yarn
docker-compose
dnsutils
bun
];
in
pkgs.stdenv.mkDerivation {
name = "env";
buildInputs = nixPackages;
}
+170
View File
@@ -0,0 +1,170 @@
var domainName = "is-a.dev";
var registrar = NewRegistrar("none");
var dnsProvider = DnsProvider(NewDnsProvider("cloudflare"));
function getDomainsList(filesPath) {
var result = [];
var files = glob.apply(null, [filesPath, true, ".json"]);
for (var i = 0; i < files.length; i++) {
var name = files[i]
.split("/")
.pop()
.replace(/\.json$/, "");
result.push({ name: name, data: require(files[i]) });
}
return result;
}
var domains = getDomainsList("./domains");
var records = [];
for (var subdomain in domains) {
var subdomainName = domains[subdomain].name;
var data = domains[subdomain].data;
var proxyState = data.proxied ? CF_PROXY_ON : CF_PROXY_OFF;
// Handle A records
if (data.records.A) {
for (var a in data.records.A) {
records.push(A(subdomainName, IP(data.records.A[a]), proxyState));
}
}
// Handle AAAA records
if (data.records.AAAA) {
for (var aaaa in data.records.AAAA) {
records.push(AAAA(subdomainName, data.records.AAAA[aaaa], proxyState));
}
}
// Handle CAA records
if (data.records.CAA) {
for (var caa in data.records.CAA) {
var caaRecord = data.records.CAA[caa];
records.push(CAA(subdomainName, caaRecord.tag, caaRecord.value));
}
}
// Handle CNAME records
if (data.records.CNAME) {
records.push(ALIAS(subdomainName, data.records.CNAME + ".", proxyState));
}
// Handle DS records
if (data.records.DS) {
for (var ds in data.records.DS) {
var dsRecord = data.records.DS[ds];
records.push(
DS(subdomainName, dsRecord.key_tag, dsRecord.algorithm, dsRecord.digest_type, dsRecord.digest)
);
}
}
// Handle MX records
if (data.records.MX) {
for (var mx in data.records.MX) {
var mxRecord = data.records.MX[mx];
if (typeof mxRecord === "string") {
records.push(
MX(subdomainName, 10 + parseInt(mx), data.records.MX[mx] + ".")
);
} else {
records.push(
MX(
subdomainName,
parseInt(mxRecord.priority),
mxRecord.target + "."
)
);
}
}
}
// Handle NS records
if (data.records.NS) {
for (var ns in data.records.NS) {
records.push(NS(subdomainName, data.records.NS[ns] + "."));
}
}
// Handle SRV records
if (data.records.SRV) {
for (var srv in data.records.SRV) {
var srvRecord = data.records.SRV[srv];
records.push(
SRV(subdomainName, srvRecord.priority, srvRecord.weight, srvRecord.port, srvRecord.target + ".")
);
}
}
// Handle TLSA records
if (data.records.TLSA) {
for (var tlsa in data.records.TLSA) {
var tlsaRecord = data.records.TLSA[tlsa];
records.push(
TLSA(
subdomainName,
tlsaRecord.usage,
tlsaRecord.selector,
tlsaRecord.matching_type,
tlsaRecord.certificate
)
);
}
}
// Handle TXT records
if (data.records.TXT) {
if (Array.isArray(data.records.TXT)) {
for (var txt in data.records.TXT) {
records.push(TXT(subdomainName, data.records.TXT[txt].length <= 255 ? "\"" + data.records.TXT[txt] + "\"" : data.records.TXT[txt]));
}
} else {
records.push(TXT(subdomainName, data.records.TXT.length <= 255 ? "\"" + data.records.TXT + "\"" : data.records.TXT));
}
}
// Handle URL records
if (data.records.URL) {
records.push(A(subdomainName, IP("192.0.2.1"), CF_PROXY_ON));
}
}
var reserved = require("./util/reserved.json");
// Handle reserved domains
for (var i = 0; i < reserved.length; i++) {
var subdomainName = reserved[i];
records.push(A(subdomainName, IP("192.0.2.1"), CF_PROXY_ON));
}
// Zone last updated TXT record
records.push(TXT("_zone-updated", "\"" + Date.now().toString() + "\""));
var ignored = [
IGNORE("\\*", "A"),
IGNORE("*._domainkey", "TXT"),
IGNORE("@", "*"),
IGNORE("_acme-challenge", "TXT"),
IGNORE("_discord", "TXT"),
IGNORE("_dmarc", "TXT"),
IGNORE("_gh-is-a-dev-o", "TXT"),
IGNORE("_gh-is-a-dev-o.**", "TXT"),
IGNORE("_github-pages-challenge-is-a-dev", "TXT"),
IGNORE("_github-pages-challenge-is-a-dev.**", "TXT"),
IGNORE("_psl", "TXT"),
IGNORE("ns[1-4]", "A,AAAA")
];
var internal = require("./util/internal.json");
internal.forEach(function(subdomain) {
ignored.push(IGNORE(subdomain, "*"));
});
D(domainName, registrar, dnsProvider, records, ignored);
-8
View File
@@ -1,8 +0,0 @@
version: '3'
services:
dev:
build:
context: .
dockerfile: ./Dockerfile
volumes:
- ./:/opt/app/code
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "S4IL21",
"email": "s4il.is.a.dev@gmail.com"
},
"records": {
"CNAME": "s4il21.github.io"
}
}
+7 -7
View File
@@ -1,9 +1,9 @@
{
"owner": {
"username": "Rayrsn",
"email": "rayrsn@proton.me"
},
"record": {
"URL": "https://rayr.link"
}
"owner": {
"username": "Rayrsn",
"email": "rayrsn@proton.me"
},
"records": {
"URL": "https://rayrsn.me/"
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "benzenma123",
"email": "haidangchauduc@gmail.com"
},
"records": {
"CNAME": "benzenma123.github.io"
}
}
-11
View File
@@ -1,11 +0,0 @@
{
"description": "SatyamV7.is-a.dev",
"repo": "https://github.com/SatyamV7/SatyamV7.github.io",
"owner": {
"username": "SatyamV7",
"email": "satyamverma46@outlook.com"
},
"record": {
"CNAME": "SatyamV7.github.io"
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "FWEEaaaa1",
"email": "gorgonfweman@outlook.com"
},
"records": {
"A": ["128.204.223.115"]
}
}
+7 -7
View File
@@ -1,9 +1,9 @@
{
"owner": {
"username": "Rayrsn",
"email": "rayrsn@proton.me"
},
"record": {
"URL": "https://rayr.link"
}
"owner": {
"username": "Rayrsn",
"email": "rayrsn@proton.me"
},
"records": {
"URL": "https://rayrsn.me/"
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "010101-sans",
"email": "010101sansdev@gmail.com"
},
"records": {
"CNAME": "010101-sans.github.io"
}
}
+8
View File
@@ -0,0 +1,8 @@
{
"owner": {
"username": "Rudransh-K999"
},
"records": {
"CNAME": "rudransh-k999.github.io"
}
}
-11
View File
@@ -1,11 +0,0 @@
{
"description": "0ad.is-a.dev",
"owner": {
"username": "broduer40",
"email": "broduer@aogamers.net",
"discord": "[AoG+] Broduer#0331"
},
"record": {
"URL": "https://play0ad.com"
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "0d4vid",
"email": "nonagnidavid@gmail.com"
},
"records": {
"CNAME": "0d4vid.github.io"
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "0spol",
"email": "gaparicio368@gmail.com"
},
"records": {
"CNAME": "0spol.github.io"
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "SkyExploreWasTaken",
"discord": "1049263707177353247"
},
"records": {
"CNAME": "edge.redirect.pizza"
}
}
+7 -11
View File
@@ -1,13 +1,9 @@
{
"owner": {
"username": "pythonmcpi",
"email": "user3456@insomnia247.nl",
"irc": "user3456@irc.insomnia247.nl/#shells",
"discord": "Little Furret#7901",
"note": "That email address is not my main email. It has email forwarding enabled, but the spam filter doesn't like the forwarding. It is probably faster to contact me on Discord or irc."
},
"description": "I'll probably put some project pages on 0x0.is-a.dev. ¯\\_(ツ)_/¯",
"record": {
"CNAME": "insomnia247.nl"
}
"owner": {
"username": "FWEEaaaa1",
"email": "gorgonfweman@outlook.com"
},
"records": {
"A": ["128.204.223.115"]
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "barnz2",
"email": "b4rnzie@gmail.com"
},
"records": {
"CNAME": "barnz2.github.io"
}
}
-12
View File
@@ -1,12 +0,0 @@
{
"description": "Yamaishi's website",
"repo": "https://github.com/0x3st/0x3st.github.io",
"owner": {
"username": "0x3st",
"email": "t.yamaishi@qq.com",
"twitter": "TenkutiYamaishi"
},
"record": {
"CNAME": "0x3st.github.io"
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "0x98c9",
"email": "humayanalrosid3@gmail.com"
},
"records": {
"CNAME": "0x98c9.pages.dev"
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "amitgoesbrr",
"email": "amitgoesbrr@gmail.com"
},
"records": {
"A": ["216.198.79.1"]
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "0xarchit",
"email": "0xarchit@proton.me"
},
"records": {
"NS": ["brenna.ns.cloudflare.com", "cartman.ns.cloudflare.com"]
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "officialaritro",
"email": "officialaritro204@gmail.com"
},
"records": {
"CNAME": "cname.vercel-dns.com"
}
}
-12
View File
@@ -1,12 +0,0 @@
{
"owner": {
"username": "aryan-212",
"email": "aryananandxic07@gmail.com"
},
"record": {
"A": ["217.174.245.249"],
"AAAA": ["2a00:da00:1800:83a4::1"],
"MX": ["hosts.is-a.dev"],
"TXT": "v=spf1 a mx ip4:217.174.245.249 ~all"
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "0xbitx",
"email": "0xbit25125@gmail.com"
},
"records": {
"CNAME": "0xbitx.github.io"
}
}
+10
View File
@@ -0,0 +1,10 @@
{
"description": "0xdwb",
"repo": "https://github.com/frosimanuel/manuisadev",
"owner": {
"username": "frosimanuel"
},
"records": {
"CNAME": "frosimanuel.github.io"
}
}
+7 -9
View File
@@ -1,11 +1,9 @@
{
"description": "0xflotus' personal developer website",
"repo": "https://github.com/0xflotus/0xflotus.github.io",
"owner": {
"username": "0xflotus",
"email": "0xflotus@gmail.com"
},
"record": {
"CNAME": "0xflotus.github.io"
}
"owner": {
"username": "0xflotus",
"email": "0xflotus@gmail.com"
},
"records": {
"CNAME": "0xflotus.github.io"
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "0xheartcode",
"email": "0xheartcode@gmail.com"
},
"records": {
"CNAME": "0xheartcode.github.io"
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "0xio32",
"email": "markus.probst@posteo.de"
},
"records": {
"CNAME": "0xio32-is-a-dev.pages.dev"
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "Jery0843",
"email": "jeromeandrewk@proton.me"
},
"records": {
"A": ["216.198.79.1"]
}
}
+10
View File
@@ -0,0 +1,10 @@
{
"description": "Personal Portfolio Hosted on Netlify",
"owner": {
"username": "marufms4",
"email": "marufsm4@gmail.com"
},
"records": {
"A": ["75.2.60.5"]
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "priyanshuthakare",
"email": "anshulthakare83@gmail.com"
},
"records": {
"CNAME": "priyanshuthakare.github.io"
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "satyam-mishra-pce",
"email": "satyam1308mishra@gmail.com"
},
"records": {
"CNAME": "cname.vercel-dns.com"
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "0xshijn",
"email": "0xshiinnn@gmail.com"
},
"records": {
"CNAME": "0xshijn.github.io"
}
}
+8 -10
View File
@@ -1,12 +1,10 @@
{
"description": "0xviel github page",
"repo": "https://github.com/nobuyaki/nobuyaki.github.io",
"owner": {
"username": "nobuyaki",
"email": "contact@0xviel.my.id",
"discord": "445073800850046977"
},
"record": {
"CNAME": "nobuyaki.github.io"
}
"owner": {
"username": "nobuyaki",
"email": "contact@0xviel.my.id",
"discord": "445073800850046977"
},
"records": {
"CNAME": "nobuyaki.github.io"
}
}
+11
View File
@@ -0,0 +1,11 @@
{
"owner": {
"username": "vinay-ghate",
"email": "vsg0131@gmail.com",
"linkedin": "https://www.linkedin.com/in/vinay-ghate"
},
"records": {
"TXT": ["v=spf1 include:spf.improvmx.com ~all"],
"MX": ["mx1.improvmx.com", "mx2.improvmx.com"]
}
}
+13
View File
@@ -0,0 +1,13 @@
{
"owner": {
"username": "0xzer0x",
"email": "youssefessamasu@gmail.com"
},
"records": {
"MX": ["mx1.forwardemail.net", "mx2.forwardemail.net"],
"TXT": [
"forward-email=youssefessamasu@gmail.com",
"v=spf1 a include:spf.forwardemail.net include:_spf.google.com -all"
]
}
}
+10
View File
@@ -0,0 +1,10 @@
{
"description": "1.is-a.dev",
"owner": {
"username": "i-am-is-a-dev",
"email": "lx737456@gmail.com"
},
"records": {
"A": ["89.106.200.1"]
}
}
+8 -10
View File
@@ -1,11 +1,9 @@
{
"owner": {
"username": "cy920820",
"email": "cuiyang673308817@gmail.com"
},
"record": {
"A": ["217.174.245.249"],
"MX": ["hosts.is-a.dev"],
"TXT": "v=spf1 a mx ip4:217.174.245.249 ~all"
}
}
"owner": {
"username": "leopku",
"discord": "1168846640464019570"
},
"records": {
"URL": "https://www.himysql.com"
}
}
+11
View File
@@ -0,0 +1,11 @@
{
"description": "Email thingy",
"owner": {
"username": "QuinceTart10",
"discord": "862644161156218891"
},
"records": {
"MX": ["a8aacaa795f68ffd.mx1.emailprofi.seznam.cz", "a8aacaa795f68ffd.mx2.emailprofi.seznam.cz"],
"TXT": "v=spf1 include:spf.seznam.cz ~all"
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "FWEEaaaa1",
"email": "gorgonfweman@outlook.com"
},
"records": {
"A": ["128.204.223.115"]
}
}
-12
View File
@@ -1,12 +0,0 @@
{
"owner": {
"username": "NuroHimself",
"email": "nurorust2023@gmail.com"
},
"record": {
"A": ["217.174.245.249"],
"AAAA": ["2a00:da00:1800:83a4::1"],
"MX": ["hosts.is-a.dev"],
"TXT": "v=spf1 a mx ip4:217.174.245.249 ~all"
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "FWEEaaaa1",
"email": "gorgonfweman@outlook.com"
},
"records": {
"A": ["128.204.223.115"]
}
}
@@ -0,0 +1,13 @@
{
"owner": {
"username": "BrianKN019",
"email": "briannkimemia@gmail.com"
},
"proxied": false,
"records": {
"TXT": [
"k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCr6KMgdxxgg7oT3ulMwPJs9RXgXDrI9UWU118pHEMohl3UbL3Jwp4oxp/9N3thh/3WCJnYV134zbEVolZwqaT3JsFEq/mQ/RpW/JnOZ3rnxqJPurb2bcfJol4SDxiWVObzHX31xnANzFcXnq1/5dMK5QvW4Jh7n0fm4+4ywqiy2QIDAQAB"
]
}
}
@@ -0,0 +1,13 @@
{
"owner": {
"username": "BrianKN019",
"email": "briannkimemia@gmail.com"
},
"proxied": false,
"records": {
"TXT": [
"k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCiNMCaVZh6WwO+RP1NR8f7ce0A0riKZflZAcweAbuEe21uCBT32aZp19gyX9P0yu4X8yVQ3UmQfdfeuvFw240/QtHtDWIzjIQJFu2yiGtNcSz1uuJL4K84n2kMQm6G7C1rA6jfDY0yj4Fr26tgKpEmq7oVH+8V0JYDSmxFr9GcQQIDAQAB"
]
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "1b7e",
"email": "nulldate4@gmail.com"
},
"records": {
"A": ["216.198.79.1"]
}
}
-12
View File
@@ -1,12 +0,0 @@
{
"owner": {
"username": "1ly4s0",
"email": "ilyaslamzouri2@gmail.com"
},
"record": {
"A": ["217.174.245.249"],
"AAAA": ["2a00:da00:1800:83a4::1"],
"MX": ["hosts.is-a.dev"],
"TXT": "v=spf1 a mx ip4:217.174.245.249 ~all"
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "1ndrajeet",
"email": "omkar.kulkarni.3174@gmail.com"
},
"records": {
"CNAME": "1ndrajeet.vercel.app"
}
}
-11
View File
@@ -1,11 +0,0 @@
{
"description": "Applying for an is-a.dev domain on behalf of my friend so he can use one.",
"repo": "https://github.com/EndingPencil/EndingPencil.github.io",
"owner": {
"username": "EndingPencil",
"email": "watsonsohil@gmail.com"
},
"record": {
"CNAME": "EndingPencil.github.io"
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "1ypi",
"email": "1ypi@proton.me"
},
"records": {
"CNAME": "1ypi.github.io"
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "TheUselessCreator",
"email": "bot40games2@gmail.com"
},
"records": {
"URL": "https://beeper.is-a.dev"
}
}
-9
View File
@@ -1,9 +0,0 @@
{
"owner": {
"username": "merakesh207",
"email": "merakesh207@gmail.com"
},
"record": {
"URL": "https://behance.net/merakesh207"
}
}
+8 -8
View File
@@ -1,10 +1,10 @@
{
"owner": {
"username": "2096779623",
"email": "2096779623@qq.com",
"telegram": "utermux_blog"
},
"record": {
"URL": "https://www.utermux.dev"
}
"owner": {
"username": "2096779623",
"email": "2096779623@qq.com",
"telegram": "utermux_blog"
},
"records": {
"URL": "https://www.utermux.dev"
}
}
+9 -10
View File
@@ -1,11 +1,10 @@
{
"owner": {
"username": "21Z",
"email": "hamdankalliyil@gmail.com"
},
"record": {
"A": ["217.174.245.249"],
"MX": ["hosts.is-a.dev"],
"TXT": "v=spf1 a mx ip4:217.174.245.249 ~all"
}
}
"owner": {
"username": "21Z",
"discord": "780356848737058857"
},
"records": {
"MX": ["mx1.improvmx.com", "mx2.improvmx.com"],
"TXT": "v=spf1 include:spf.improvmx.com ~all"
}
}
+10
View File
@@ -0,0 +1,10 @@
{
"repo": "https://github.com/256javy/256javy.github.io",
"owner": {
"username": "256javy",
"email": "256javiervillalba@gmail.com"
},
"records": {
"CNAME": "256javy.github.io"
}
}
@@ -0,0 +1,9 @@
{
"owner": {
"username": "RaunakMandal",
"email": "iamriju2000@gmail.com"
},
"records": {
"TXT": "k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5eTCgfTZyhQPPjhe2XLgXrtpj4MtiqBKdVv14XN+zvRT8Z+YCXPElsEVDwvLc91G8Lv4kZwgiLaINzeZjd8USQtgwaUx1QJnIeRyAvuq4kkAIFBAL5HsC4zqQAIzjCfAPrc3WhG7FYLZu76hpy3GbKZYAB+kBgTR+QRO79rvrbQIDAQAB"
}
}
+10
View File
@@ -0,0 +1,10 @@
{
"owner": {
"username": "Nicholas-Tritsaris",
"email": "nicholas.tritsaris13@bk.ru"
},
"records": {
"TXT": "2a86ae1be926415180414c8d47d0173e"
},
"proxied": false
}
-9
View File
@@ -1,9 +0,0 @@
{
"owner": {
"username": "PhoenixOrigin",
"email": "phoenixorigin171@gmail.com"
},
"record": {
"A": ["130.162.166.134"]
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "2giosangmitom",
"email": "2giosangmitom@gmail.com"
},
"records": {
"CNAME": "2giosangmitom.github.io"
}
}
+12
View File
@@ -0,0 +1,12 @@
{
"owner": {
"username": "dragsbruh",
"email": "dragsbruh@protonmail.com",
"discord": "781445370177126401",
"bluesky": "furina.is-a.dev"
},
"records": {
"URL": "https://furina.is-a.dev"
}
}
+7 -9
View File
@@ -1,11 +1,9 @@
{
"description": "Url redirect to cutt37.is-a.dev",
"repo": "https://github.com/37cut/37cut.github.io",
"owner": {
"username": "37cut",
"email": "cutt37@outlook.com"
},
"record": {
"URL": "https://cutt37.is-a.dev"
}
"owner": {
"username": "37cut",
"email": "cutt37@outlook.com"
},
"records": {
"URL": "https://cutt37.is-a.dev"
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "3geETR",
"email": "egemacun@gmail.com"
},
"records": {
"CNAME": "3geetr.github.io"
}
}
-11
View File
@@ -1,11 +0,0 @@
{
"owner": {
"username": "3kh0",
"email": "echo-the-coder@tuta.io"
},
"record": {
"A": ["217.174.245.249"],
"MX": ["hosts.is-a.dev"],
"TXT": "v=spf1 a mx ip4:217.174.245.249 ~all"
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "3lyly0",
"email": "3lyly00@gmail.com"
},
"records": {
"CNAME": "cname.vercel-dns.com"
}
}
+10
View File
@@ -0,0 +1,10 @@
{
"owner": {
"username": "amrkakashi",
"email": "93amr.kakashi@gmail.com"
},
"records": {
"A": ["216.198.79.1"]
}
}
+8 -9
View File
@@ -1,11 +1,10 @@
{
"description": "3pls0de.is-a.dev.",
"repo": "https://github.com/3pls0de",
"owner": {
"username": "3pls0de",
"email": "naji.aka58@gmail.com"
},
"record": {
"URL": "https://lostpipel.blogspot.com"
}
"description": "3pls0de.is-a.dev.",
"owner": {
"username": "3pls0de",
"email": "naji.aka58@gmail.com"
},
"records": {
"URL": "https://lostpipel.blogspot.com"
}
}
+23
View File
@@ -0,0 +1,23 @@
{
"owner": {
"username": "LonelyGuy12",
"email": "me@4.is-a.dev",
"discord": "886120777630486538"
},
"records": {
"MX": [
{
"target": "mx1.improvmx.com",
"priority": 10
},
{
"target": "mx2.improvmx.com",
"priority": 20
}
],
"TXT": [
"v=spf1 include:spf.improvmx.com ~all"
],
"URL": "https://lonely.is-a.dev"
}
}
+6 -8
View File
@@ -1,10 +1,8 @@
{
"owner": {
"username": "404Dev-404",
"email": "anthonyvaldes318+404@gmail.com"
},
"record": {
"CNAME": "404dev-404.github.io"
}
"owner": {
"username": "audtjddld"
},
"records": {
"CNAME": "audtjddld.github.io"
}
}
+7 -9
View File
@@ -1,11 +1,9 @@
{
"description": "44.is-a.dev",
"repo": "https://github.com/9xN/9xN.github.io",
"owner": {
"username": "9xN",
"email": "0@fbi.ac"
},
"record": {
"CNAME": "9xN.github.io"
}
"owner": {
"username": "9xN",
"email": "0@fbi.ac"
},
"records": {
"CNAME": "9xn.github.io"
}
}
+9
View File
@@ -0,0 +1,9 @@
{
"owner": {
"username": "45i",
"email": "sayakpalit61@gmail.com"
},
"records": {
"CNAME": "45i.github.io"
}
}
Loaded 100 of 13804 files, more files were not shown because too many files have changed in this diff. Show more