A high fidelity, full stack implementation of core AWS Route 53 workflows.
Built with Next.js, FastAPI, and SQLite to recreate hosted zone and DNS record management.
Demo Credentials: Username:
admin| Password:admin123
| Route 53 Dashboard | Authentication (IAM Login) |
![]() |
![]() |
| Hosted Zones & Records | |
![]() |
|
- AWS Styled Interface: Authentic Cloudscape based interface modeled strictly after the Route 53 console.
- Hosted Zones Management: Create, view, and delete Public or Private hosted zones.
- DNS Records Management: Comprehensive support for 9 DNS record types (
A,AAAA,CNAME,TXT,MX,NS,PTR,SRV,CAA). - Data Synchronization: TanStack Query handles API caching, invalidation, and seamless loading states.
- Authentication: Secure mock authentication utilizing bcrypt password hashing and HttpOnly session cookies.
graph TD
Client[Next.js 14 + TypeScript]
Client -- "REST / JSON<br/>HttpOnly authentication cookie" --> API[FastAPI]
API -- "Authentication" --> AuthLogic
API -- "Hosted Zones" --> ZoneLogic
API -- "DNS Records" --> RecordLogic
AuthLogic --> ORM[SQLAlchemy]
ZoneLogic --> ORM
RecordLogic --> ORM
ORM --> DB[(SQLite)]
User HostedZone DNSRecord
├── id ├── id ├── id
├── username ├── aws_zone_id ├── zone_id
└── password_hash ├── name ├── name
├── type ├── type
Session ├── description ├── ttl
├── id └── user_id ├── value
├── user_id └── routing_policy
├── token
└── expires_at [User] 1 ─── N [HostedZone] 1 ─── N [DNSRecord]
| Method | Endpoint | Purpose |
|---|---|---|
POST |
/api/v1/auth/login |
Authenticate session |
POST |
/api/v1/auth/logout |
End active session |
GET |
/api/v1/auth/me |
Retrieve current user |
GET |
/api/v1/hosted-zones |
List and search zones |
POST |
/api/v1/hosted-zones |
Create a new zone |
GET |
/api/v1/hosted-zones/{id} |
Get zone details |
DELETE |
/api/v1/hosted-zones/{id} |
Delete a zone |
GET |
/api/v1/hosted-zones/{id}/records |
List DNS records |
POST |
/api/v1/hosted-zones/{id}/records |
Create DNS record |
DELETE |
/api/v1/hosted-zones/{id}/records/{id} |
Delete DNS record |
cd backend
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
python seed_demo.py # Seeds the database with admin user
uvicorn app.main:app --reload --port 8000cd frontend
npm install
npm run devFrontend will be running at http://localhost:3000.
- Route 53 Behavior: Creating a hosted zone automatically generates system level
NSandSOArecords. These system records are protected and cannot be manually edited or deleted. Hosted zone IDs explicitly mimic the AWS/hostedzone/Z...format. - Dynamic Forms: Record creation forms dynamically change structure and validation according to the selected DNS type (e.g., SRV vs A records).
- Mocked AWS Infrastructure: For "Private" hosted zones, the AWS Region and VPC ID dropdowns are purely visual implementations to demonstrate conditional UI rendering matching Route 53.
- Synchronous Operations: Real DNS propagation takes time, but in this clone, record creation and deletion are handled synchronously for immediate user feedback.


