A modern construction project management application built with Nuxt 4, featuring content management, client administration, and project tracking capabilities.
- 🏗️ Project Management: Track construction projects with detailed information
- 👥 Client Administration: Manage client relationships and communications
- 📝 Content Management: Rich content editor with media library
- 🌍 Multi-language Support: English and Spanish localization
- 📱 Responsive Design: Mobile-first design approach
- 🔒 Legal Compliance: GDPR-compliant privacy policy and terms of service
- 🐳 Docker Support: Containerized deployment options
- ☁️ Cloud Deployment: Koyeb serverless deployment ready
- Framework: Nuxt 4.2.1 with Vue 3.5.22
- Language: TypeScript 5.9.3
- Database: SQLite with better-sqlite3
- Styling: CSS3 with responsive design
- Content: @nuxt/content for rich content management
- Internationalization: @nuxtjs/i18n for multi-language support
Make sure to install dependencies:
# npm
npm install
# pnpm
pnpm install
# yarn
yarn install
# bun
bun installStart the development server on http://localhost:3000:
# npm
npm run dev
# pnpm
pnpm dev
# yarn
yarn dev
# bun
bun run devBuild the application for production:
# npm
npm run build
# pnpm
pnpm build
# yarn
yarn build
# bun
bun run buildLocally preview production build:
# npm
npm run preview
# pnpm
pnpm preview
# yarn
yarn preview
# bun
bun run preview# Start development environment
docker-compose -f docker-compose.dev.yml up --build
# Start production environment
docker-compose up --buildDeploy to Koyeb's serverless platform:
# Deploy to Koyeb
npm run koyeb:deploy
# Check deployment status
npm run koyeb:status
# View logs
npm run koyeb:logsFor detailed deployment instructions, see KOYEB_DEPLOYMENT.md.
app/
├── components/ # Vue components
│ ├── AdminContent.vue # Content management dashboard
│ ├── ContentEditor.vue # Rich text editor
│ ├── MediaLibrary.vue # File management
│ └── ...
├── pages/ # Application pages
│ ├── admin/ # Admin panel pages
│ ├── privacy.vue # Privacy policy
│ ├── terms.vue # Terms of service
│ └── ...
└── assets/ # Static assets and styles
server/
├── api/ # API endpoints
└── utils/ # Server utilities
content/ # Content files
i18n/ # Internationalization
public/ # Public assets
The application uses SQLite for data persistence:
- Development: Local SQLite file
- Docker: Persistent volume mounting
- Koyeb: Persistent storage with automatic backups
Database initialization happens automatically via health check endpoints.
Key environment variables for production:
NODE_ENV=production
NUXT_PORT=8000
NUXT_HOST=0.0.0.0
JWT_SECRET=your-jwt-secret-key
SESSION_SECRET=your-session-secret-key
NUXT_DB_PATH=./data/construction.dbGET /api/health- Health check and database initialization- Admin endpoints for content and project management
- Media upload and management endpoints
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For deployment and configuration questions, refer to: