A modern Next.js application for enterprise IT solutions, built with TypeScript, Bootstrap, and deployed on DigitalOcean infrastructure.
Important: This project has migrated from Make to Just as the primary command runner. Just provides a cleaner, more maintainable alternative to Makefiles with better cross-platform support and syntax.
- Old:
make <command> - New:
just <command>
All commands remain the same - only the tool has changed. The Makefile is deprecated and will be removed in a future version.
- Docker & Docker Compose
- Node.js 18+ (for local development)
- Terraform & Ansible (for infrastructure deployment)
- Git
- Clone and setup:
git clone <repository-url>
cd dotca
just setup- Start development environment:
just dev-up- View the application:
- Open http://localhost:3000 in your browser
- The app auto-reloads as you edit files
# Start development environment
just dev-up
# Stop development environment
just dev-down
# View logs
just dev-logs
# Restart containers
just dev-restart
# Run tests (unit + E2E)
just dev-test
# Run linting and type checking
just dev-lint
# Clean development environment
just dev-clean FORCE=trueIf you prefer to run without Docker:
npm install
npm run devThis project includes comprehensive testing:
npm run test
npm run test:watch
npm run test:coveragejust dev-up # Start environment first
npm run test:e2e
npm run test:e2e:debug
npm run test:e2e:uiThis project uses infrastructure-as-code with Terraform and Ansible for DigitalOcean deployments:
# Validate environment setup
just validate
# Deploy to staging
just deploy ENVIRONMENT=staging
# Deploy to production
just deploy ENVIRONMENT=production
# Check deployment status
just status ENVIRONMENT=staging
# Clean up deployment
just destroy ENVIRONMENT=stagingAutomated deployment via GitHub Actions:
- Staging: Automatic deployment on push to
stagingbranch - Production: Manual deployment after image promotion
For advanced users or debugging:
# Terraform operations
just terraform-plan ENVIRONMENT=staging
just terraform-apply ENVIRONMENT=staging BACKEND=local
# Ansible operations
just ansible-ping
just ansible-syntaxRequired environment variables (create .env.local for local development):
DO_TOKEN=your_digitalocean_token
BREVO_API_KEY=your_email_service_key
RESEND_API_KEY=your_resend_api_key
[email protected]
STRIPE_SECRET_KEY=your_stripe_secret
STRIPE_PUBLISHABLE_KEY=your_stripe_publishable_keyThe application includes automatic Web Vitals monitoring:
- CLS (Cumulative Layout Shift): Visual stability
- FID (First Input Delay): Interactivity
- LCP (Largest Contentful Paint): Loading performance
- FCP (First Contentful Paint): First content paint
- TTFB (Time to First Byte): Network performance
Metrics are collected and sent to /api/analytics/web-vitals.
├── src/ # Next.js application source
├── e2e/ # End-to-end tests (Playwright)
├── docker-compose.dev.yml # Local development environment
├── terraform/ # Infrastructure as code
├── ansible/ # Configuration management
├── scripts/ # Development and deployment scripts
├── docs/ # Documentation
├── justfile # Development and deployment commands
└── Makefile # Deprecated - replaced by justfile
- Linting:
npm run lint - Type checking:
npm run typecheck - Testing:
just dev-test - Pre-commit hooks:
npm run pre-commit:install
Follow conventional commit format:
feat:New featuresfix:Bug fixesdocs:Documentationstyle:Code style changesrefactor:Code refactoringtest:Testingchore:Maintenance
- Create a feature branch from
staging - Make your changes with tests
- Run
just dev-testto ensure everything works - Submit a pull request