SecureDot is a modern SSL management system that lets users easily issue, verify, and manage SSL certificates with Let’s Encrypt (ACME). It’s built with Next.js, Firebase, and modern best practices for security, logging, and support.
- Issue free SSL certificates using Let’s Encrypt
- Automate DNS-01 challenges
- Download certificates securely
- Order status tracking with detailed logs
- Firebase Authentication for users
- SEO-friendly metadata, sitemap, robots.txt
- Contact form that saves queries
- Full logging for success, failure, warnings, logins
- Firebase Analytics support
- Framework: Next.js (App Router)
- API: Next.js API Routes
- Auth: Firebase Authentication
- Database: Firebase Firestore
- ACME:
acme-client - UI: Tailwind CSS, shadcn/ui, Lucide icons
- Logging: Custom Firestore logs
- Hosting: Vercel or Firebase Hosting
git clone https://github.com/YOUR_ORG/securedot.git
cd securedot# With pnpm
pnpm install
# or npm
npm installCreate a .env.local file in your project root:
NEXT_PUBLIC_BASE_URL=https://yourdomain.com
NEXT_PUBLIC_FIREBASE_API_KEY=YOUR_FIREBASE_API_KEY
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=YOUR_FIREBASE_AUTH_DOMAIN
NEXT_PUBLIC_FIREBASE_PROJECT_ID=YOUR_FIREBASE_PROJECT_ID
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=YOUR_FIREBASE_STORAGE_BUCKET
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=YOUR_SENDER_ID
NEXT_PUBLIC_FIREBASE_APP_ID=YOUR_FIREBASE_APP_ID
NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID=YOUR_MEASUREMENT_ID
ACME_DIRECTORY_URL=https://acme-staging-v02.api.letsencrypt.org/directory
ACME_EMAIL=admin@yourdomain.com
NEXT_PUBLIC_SUPER_ADMIN_EMAIL=...
SMTP_HOST=...
SMTP_USER=...
SMTP_PASS=...
EMAIL_FROM=...
NEXT_PUBLIC_ACME_ACCOUNTS_COLLECTION=...
FIREBASE_PROJECT_ID=...
FIREBASE_CLIENT_EMAIL=...
FIREBASE_PRIVATE_KEY=...✅ Tip: Use the staging ACME URL for development. For production, switch to:
ACME_DIRECTORY_URL=https://acme-v02.api.letsencrypt.org/directorypnpm dev
# or
npm run devYour app will be available at http://localhost:3000
/app
/api/ssl → ACME endpoints (verify, finalize, issue)
/client → Client Area dashboard & order management
/components → UI components (buttons, cards, modals)
/Parts → Sections like FAQ, Hero, etc.
/hooks → useAuth, useUser hooks
/lib → ACME client helpers, logging utils
/public → Assets, logos
/styles → Tailwind config| Collection | Purpose |
|---|---|
| ssl_orders | Stores orders with status, domain, challenge, CSR, payment |
| certificates | Issued cert PEM, validity, linked to an order |
| logs | Every event: success, failure, login, DNS check, finalization |
| queries | Contact form submissions and Support Queries |
| users | Auth profiles |
- ACME Flow: pending ➜ ready_for_finalization ➜ certificate_issued
- DNS-01 Challenge: Users add TXT records to verify domain ownership
- CSR Generation: App generates CSRs for users
- Logs: Everything is logged with timestamps, status, userId, and IP
- Private Keys: Private keys are never stored permanently — users must keep them safe
/sitemap.xml and /robots.txt are auto-generated
Each page has metadata: title, description, and keywords
- Use the staging ACME directory for dev to avoid rate limits
- Log every critical operation: success, fail, warning, DNS match
- Never expose private keys — download once, no recovery
- Secure Firebase rules and test often
- Use Firebase Analytics to monitor usage patterns
- Fork this repo and create a new branch
- Commit with clear messages.
- Log important actions using
logEvent(). - Submit a Pull Request!
This project is proprietary for internal or authorized use only. Contact us for licensing questions.
- Website: https://techinika.co.rw
- Support: info@techinika.com
- Docs: In progress...
SecureDot — Your SSL Certificates, Simplified 🔐