A React-based dictionary application with automated deployment to production.
- React TypeScript application
- Automated deployment via GitHub Actions
- Docker containerization
- Traefik reverse proxy with SSL
- Let's Encrypt automatic certificate generation
The application is automatically deployed to production when changes are pushed to the master branch.
The following environment variables are required in GitHub Actions:
DOMAIN- Your production domain (e.g.,fancydictionary.com)EMAIL- Email for Let's Encrypt certificatesTRAEFIK_PASSWORD_HASH- Password hash for Traefik dashboardPROJECT_DIR- Server project directory pathHOST- Server IP addressUSERNAME- SSH usernamePORT- SSH portSSH_KEY- SSH private key
- GitHub Actions runs tests and builds the application
- SSH Action deploys to production server
- Deploy Script updates configuration and starts containers
- Traefik handles SSL termination and routing
- Let's Encrypt automatically generates SSL certificates
- Main App:
https://fancydictionary.com - Traefik Dashboard:
https://traefik.fancydictionary.com- Username:
admin - Password: Set in GitHub Secrets
- Username:
# Install dependencies
npm install
# Start development server
npm start
# Build for production
npm run build
# Run tests
npm test├── src/ # React application source
├── scripts/ # Deployment scripts
├── traefik/ # Traefik configuration
├── docker-compose.yml # Docker services
├── Dockerfile.prod # Production Docker image
└── .github/workflows/ # GitHub Actions
SSL certificates are automatically generated by Let's Encrypt through Traefik. The certificates are stored in traefik/acme.json.
Note: Let's Encrypt has rate limits (5 certificates per domain per week). If you encounter rate limiting, wait 24 hours before retrying.