A publicly accessible web application that helps organizations and individuals check domain DMARC configurations, provides educational content, and maintains a public registry of domains with inadequate DMARC protection.
├── backend/ # NestJS backend API
│ ├── src/ # Source code
│ ├── test/ # E2E tests
│ └── package.json # Backend dependencies
├── frontend/ # Next.js frontend
│ ├── src/ # Source code
│ └── package.json # Frontend dependencies
└── README.md # This file
- Framework: NestJS with TypeScript
- Database: Firebase Firestore
- Testing: Jest + fast-check for property-based testing
- DNS: Node.js built-in dns module
- Framework: Next.js with TypeScript
- Styling: Tailwind CSS
- Components: Custom UGS (UI component system)
- Testing: Jest + React Testing Library + fast-check
- Node.js 18+
- npm or yarn
- Firebase project (for production)
-
Navigate to backend directory:
cd backend -
Install dependencies:
npm install
-
Copy environment file and configure:
cp .env.example .env # Edit .env with your Firebase configuration -
Run development server:
npm run start:dev
-
Run tests:
npm test
-
Navigate to frontend directory:
cd frontend -
Install dependencies:
npm install
-
Copy environment file and configure:
cp .env.example .env.local # Edit .env.local with your backend URL -
Run development server:
npm run dev
-
Run tests:
npm test
- API endpoints will be available at
http://localhost:3001 - Health check:
GET /health - API documentation: Available after implementing OpenAPI/Swagger
- Web interface available at
http://localhost:3000 - Hot reload enabled for development
- Tailwind CSS for styling
Both projects include:
- Unit tests with Jest
- Property-based tests with fast-check
- Integration/E2E tests
- Test coverage reporting
For production deployment, you'll need:
- Firebase project with Firestore enabled
- Service account key for backend authentication
- Firestore security rules configured for public read access
- Follow the implementation tasks in
.kiro/specs/dmarc-portal/tasks.md - Run tests before submitting changes
- Ensure TypeScript compilation passes
- Follow the established code style
See LICENSE file for details.