Domain Locker: Your Central Hub for Domain Portfolio Management
Domain Locker provides a centralized platform for managing your domain portfolio, offering detailed analysis, continuous monitoring, and timely notifications for expirations and changes.
Domain Locker is designed as the ultimate central hub for managing your entire domain name portfolio. It provides comprehensive visibility, ensuring you never lose track of your domains.

About
The primary goal of Domain Locker is to offer complete visibility and control over your domain name portfolio from a single, centralized location. For every domain you add, the platform automatically analyzes it, fetches all associated data, and then continuously monitors it. You will receive notifications (configured to your preferences) when significant changes occur or when a domain is approaching its expiration date. This includes detailed domain analysis, security insights, historical change logs, recent performance metrics, valuation data, and much more.
With Domain Locker, you can prevent domain expirations, track your registrars and providers, and maintain a clear overview of your assets.
Screenshots
(Note: The 5fps GIF was intentionally kept low-res to minimize file size.)

More screenshots are available:

Features
Domain Locker offers a robust set of features to streamline your domain management:
- Total Visibility: Get a clear overview of all your domains and upcoming expirations.
- Auto-fetched Data: Automatically retrieve data like SSL certificates, hosts, registrars, IP addresses, subdomains, DNS records, and more.
- Detailed Metrics & Analysis: Access in-depth metrics and analysis for each domain.
- Visual Analytics: Explore visual breakdowns and trends across your entire portfolio.
- Configurable Alerts: Set up customized alerts and webhook notifications for important changes.
- Easy Data Management: Supports easy import/export and provides API access to your data.
- Change Tracking: Monitor and track changes in domain configurations over time.
- Website Monitoring: Keep an eye on website health, security, and performance.
- Financial Tracking: Record purchase prices and renewal costs.
- Organization: Add categories and link related resources to your domains.
- Customization: Enjoy multi-language support, dark/light/custom themes, and more.
The platform's features can be broadly categorized as follows:
- Domain Data: Includes auto-fetching assets (SSL, hosts, registrars, IPs, DNS, subdomains), detailed domain data, enrichment with tags, notes, costs, and metadata, and connection with external tools for more data.
- Metrics: Provides a breakdown of domain providers, a timeline of registrations and upcoming expirations, monitoring of domain uptime, performance, and health, and recording of valuation, purchase prices, and renewal costs.
- Notifications: Offers timely alerts before domain expiration, configurable alerts for changes in domain configuration, multiple notification channels (webhook, email, SMS, Slack, Telegram, WhatsApp), and tracking of each domain's change history.
- Data Control: Allows users to own their data with export, import, and delete options; programmatic access via REST or GraphQL API, RSS, iCal, and Prometheus integrations; detailed change logs of all domain updates; and a transparent privacy policy.
- Customization: Supports SSO and 2FA; custom themes, fonts, and light/dark mode; multi-language support; open-source and self-hostable; and is accessible, responsive, and well-documented.
Live Demo
Experience Domain Locker firsthand with our live demo:
Username: demo@domain-locker.com
Password: domainlocker
Get Started
You have two convenient options to start using Domain Locker:
- Managed Instance: Access the free managed service at domain-locker.com.
- Self-Hosting: Deploy the application yourself using Docker (also free).
Option 1: Domain-Locker.com
Simply visit our website and sign up using your Google, GitHub, or email account. The starter plan is free and requires no setup. Just sign in, add your domains, and begin tracking them immediately.
Option 2: Self-Hosting
To self-host, you can use the one-liner command or the provided docker-compose.yml file:
curl -fsSL https://install.domain-locker.com | bash
Details:
- Prerequisites: Docker must be installed on your host system, as Domain Locker is designed to run in containers.
- Containers: A Docker image is published to
lissy93/domain-locker. You will also need a PostgreSQL database, such as thepostgres:15-alpinecontainer. - Environment: Bind port
3000in the container to your hostPORT(defaults to3000). Specify the PostgreSQL environment variables:DL_PG_HOST,DL_PG_PORT,DL_PG_USER,DL_PG_PASSWORD, andDL_PG_NAME. - Volumes: Mount a volume to
/var/lib/postgresql/datato ensure your PostgreSQL data persists. - Crons: Set up cron jobs to execute the following API endpoints:
/api/domain-updater: Run daily to keep domain data up-to-date and trigger notifications./api/uptime-monitor: Run every N minutes to monitor website uptime and performance.
Example: A complete setup can be achieved using our docker-compose.yml file. Refer to the Self-Hosting Docs for more detailed information.
The original content included a Docker flowchart diagram illustrating volume mounts and network connections between the PostgreSQL DB and the App Container.
Developing
Project Setup
To get started with development:
git clone git@github.com:Lissy93/domain-locker.git # Get the code
cd domain-locker # Navigate into directory
npm install --legacy-peer-deps # Install dependencies
cp .env.example .env # Set environmental variables
npm run dev # Start the dev server
Prerequisites
Ensure you have Git and Node.js installed on your system.
Configuring
The .env.sample file contains public credentials for our Supabase development instance. For an alternative database, refer to the Database section below to configure with PostgreSQL.
Deploying
You can build the code using npm run build and then run it with npm start. Alternatively, build the Docker container with docker build -t domain-locker .. Please note: do not use the development Supabase instance in production, as it is frequently reset.
App Architecture
Domain Locker consists of an application, a database, and several API endpoints.
- The App: Built with Angular, utilizing Analog+Nitro with PrimeNg components and Tailwind for styling.
- The Server: Implemented as a series of Deno endpoints with TypeScript functions.
- The Database: Supports either PostgreSQL or Supabase.
While the self-hosted instance is designed to be deployed standalone, the managed version integrates with a few additional third-party services. More details can be found in the docs.
Why Angular? The author humorously states, "As some sort of sick joke to future me, who then needs to maintain this."

You can view documentation for all technologies and services used here.
Architecture
The application architecture is straightforward. A user interacts with the web application (frontend and API endpoints) to read and write data to the database. A cron service periodically triggers API endpoints to update domain data, track changes, monitor health, and send notifications based on user preferences or impending expirations.
The original content included a detailed graph TD diagram illustrating user interactions, automated cron jobs (triggering updates, uptime monitoring, expiration checks, notifications via external APIs like Resend and Twilio), and data flow to/from the PostgreSQL/Supabase database.
Database
A database is essential for storing all your domains and their associated information. Domain Locker supports both Supabase and standard PostgreSQL for data storage, with the choice depending on the environment variables set.
- Supabase: Follow the Supabase self-hosting docs and use
dl-sb-iacto import the schema and configure authentication, edge functions, emails, etc. Set theSUPABASE_URLandSUPABASE_ANON_KEYenvironment variables. - PostgreSQL: Deploy a PostgreSQL instance and then apply the
schema.sql. If the database already exists:If creating from scratch, usepsql -h $DL_PG_HOST -U $DL_PG_USER -d $DL_PG_NAME -f ./db/schema.sqlsetup-postgres.sh(requires superuser access). Set theDL_PG_HOST,DL_PG_PORT,DL_PG_USER,DL_PG_PASSWORD, andDL_PG_NAMEenvironment variables.
The original content included a classDiagram detailing the database schema with tables like users, domains, registrars, tags, notifications, billing, dns_records, domain_costings, uptime, ssl_certificates, whois_info, and their relationships.
You can download the schema from db/schema.sql.
Contributing
Contributions of any kind are always welcome and greatly appreciated! ❤️ If you're new to Git, here's the general workflow for contributing:
- Fork the repository: Click here to fork.
- Clone your fork:
git clone git@github.com:[your_username]/domain-locker.git. - Set up the project: Follow the Project Setup instructions above to get the project running in development mode.
- Implement your changes: Develop your new feature or fix a bug.
- Create a branch:
git checkout -b feature-branch. - Add & Commit:
git add .your changes andgit commitusing conventional commits. - Push:
git pushyour changes to your branch. - Open a Pull Request: Head to GitHub and open a PR against the
mainbranch. Remember to include details of your changes, the rationale, and link any associated issues.
Your contributions will be reviewed, feedback provided, and once merged, they will be released to production and available in the latest Docker image.
The original content included a gitGraph diagram illustrating branching, merging, tagging, and feature development, including contributions from external branches.
Attributions
Contributors:
Sponsors:
License
Lissy93/Domain-Locker is licensed under the MIT License.
© Alicia Sykes 2025.
The MIT License (MIT)
Copyright (c) Alicia Sykes alicia@omg.com
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, sub-license, 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.
© Alicia Sykes 2025 Licensed under MIT
Thanks for visiting :)