{"id":40411633,"url":"https://github.com/tomblancdev/laposte-lovely","last_synced_at":"2026-01-20T14:09:23.804Z","repository":{"id":326753207,"uuid":"1105990253","full_name":"tomblancdev/laposte-lovely","owner":"tomblancdev","description":null,"archived":false,"fork":false,"pushed_at":"2025-11-30T08:45:01.000Z","size":165,"stargazers_count":0,"open_issues_count":7,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-02T01:38:15.260Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tomblancdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-28T13:04:21.000Z","updated_at":"2025-11-29T20:29:22.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/tomblancdev/laposte-lovely","commit_stats":null,"previous_names":["tomblancdev/laposte-lovely"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/tomblancdev/laposte-lovely","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomblancdev%2Flaposte-lovely","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomblancdev%2Flaposte-lovely/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomblancdev%2Flaposte-lovely/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomblancdev%2Flaposte-lovely/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tomblancdev","download_url":"https://codeload.github.com/tomblancdev/laposte-lovely/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomblancdev%2Flaposte-lovely/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28604712,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T12:01:53.233Z","status":"ssl_error","status_checked_at":"2026-01-20T12:01:46.545Z","response_time":117,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-20T14:09:22.986Z","updated_at":"2026-01-20T14:09:23.797Z","avatar_url":"https://github.com/tomblancdev.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Django Overtuned\n\nA modern, full-stack web application template that combines Django's robust backend capabilities with Next.js frontend, providing a comprehensive foundation for building scalable web applications.\n\n[![Built with Cookiecutter Django](https://img.shields.io/badge/built%20with-Cookiecutter%20Django-ff69b4.svg?logo=cookiecutter)](https://github.com/cookiecutter/cookiecutter-django/)\n[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)\n[![Python](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/)\n[![Django](https://img.shields.io/badge/django-5.2.7-green.svg)](https://docs.djangoproject.com/)\n[![Next.js](https://img.shields.io/badge/next.js-16.0.1-black.svg)](https://nextjs.org/)\n\nLicense: MIT\n\n## 🚀 Features\n\n### Backend (Django)\n\n- **Django 5.2.7** with modern Python 3.12+ support\n- **Django REST Framework** for API development\n- **Django Allauth** with MFA support for authentication\n- **Celery** for background task processing with Redis\n- **PostgreSQL** database with optimized configuration\n- **Automatic API documentation** with drf-spectacular\n- **Comprehensive test suite** with pytest and coverage\n- **Code quality tools**: Ruff, mypy, djLint\n\n### Frontend (Next.js)\n\n- **Next.js 16** with React 19 and TypeScript\n- **Tailwind CSS 4** for modern styling\n- **OpenAPI integration** with automatic type generation\n- **Authentication flows** integrated with Django backend\n- **Modern build tools**: Turbopack, Biome\n\n### DevOps \u0026 Infrastructure\n\n- **Docker Compose** setup for local development and production\n- **Multi-environment configuration** (local, production, test)\n- **Automated schema generation** between backend and frontend\n- **Email testing** with Mailpit\n- **Task automation** with Just\n- **Internationalization** support (English, French, Portuguese)\n\n## 🏗️ Architecture\n\n```text\ndjango-overtuned/\n├── backend/          # Django application\n│   ├── config/       # Django settings and configuration\n│   ├── django_overtuned/  # Main Django app\n│   └── requirements/ # Python dependencies\n├── frontend/         # Next.js application\n│   ├── app/         # Next.js app directory\n│   ├── components/  # Reusable React components\n│   └── types/       # TypeScript type definitions\n├── compose/         # Docker configuration\n├── scripts/         # Utility scripts\n└── docs/           # Documentation\n```\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- [Docker](https://www.docker.com/) and Docker Compose\n- [Just](https://github.com/casey/just) (optional, for task automation)\n\n### Local Development Setup\n\n1. **Clone the repository**\n\n   ```bash\n   git clone \u003crepository-url\u003e\n   cd django-overtuned\n   ```\n\n2. **Start the development environment**\n\n   ```bash\n   # Using Just (recommended)\n   just up\n\n   # Or using Docker Compose directly\n   docker compose -f docker-compose.local.yml up -d\n   ```\n\n3. **Access the applications**\n\n   - **Frontend (Next.js)**: \u003chttp://localhost:3000\u003e\n   - **Backend API**: \u003chttp://localhost:8000\u003e\n   - **Admin Panel**: \u003chttp://localhost:8000/admin\u003e\n   - **API Documentation**: \u003chttp://localhost:8000/api/schema/swagger-ui/\u003e\n   - **Email Testing (Mailpit)**: \u003chttp://localhost:8025\u003e\n   - **Flower (Celery monitoring)**: \u003chttp://localhost:5555\u003e\n\n4. **Create a superuser account**\n\n   ```bash\n   just manage createsuperuser\n   ```\n\n### Available Commands\n\nUsing Just (task runner):\n\n```bash\njust                    # List all available commands\njust build             # Build Docker images\njust up                # Start all services\njust down              # Stop all services\njust logs              # View container logs\njust manage \u003ccommand\u003e  # Run Django management commands\n```\n\n### Project Renaming\n\nThe project includes cross-platform scripts to rename all project components (Docker images, containers, configurations) to your preferred name:\n\n**Linux/macOS (Bash):**\n\n```bash\nbash scripts/rename-project.sh [new-project-name]\n```\n\n**Windows (PowerShell):**\n\n```powershell\n.\\scripts\\rename-project.ps1 [new-project-name]\n```\n\n**Windows (Command Prompt):**\n\n```cmd\nscripts\\rename-project.cmd [new-project-name]\n```\n\nThese scripts will:\n\n- Prompt for a new project name if not provided\n- Automatically slugify the name (lowercase, alphanumeric, `_`, `-`)\n- Update all Docker Compose files and dev container configuration\n- Confirm changes before applying them\n\n**Example:**\n\n```bash\nbash scripts/rename-project.sh \"my-awesome-app\"\n# Updates docker-compose.*.yml and .devcontainer/devcontainer.json\n# Renames images from django-overtuned_* to my-awesome-app_*\n```\n\n## 📋 Development Workflow\n\n### Setting Up Your Users\n\n- To create a **normal user account**, just go to Sign Up and fill out the form. Once you submit it, you'll see a \"Verify Your E-mail Address\" page. Go to your console to see a simulated email verification message. Copy the link into your browser. Now the user's email should be verified and ready to go.\n\n- To create a **superuser account**, use this command:\n\n  ```bash\n  just manage createsuperuser\n  # Or directly with Docker Compose\n  docker compose -f docker-compose.local.yml run --rm django python manage.py createsuperuser\n  ```\n\nFor convenience, you can keep your normal user logged in on Chrome and your superuser logged in on Firefox (or similar), so that you can see how the site behaves for both kinds of users.\n\n### Code Quality and Testing\n\n#### Type Checking\n\nRunning type checks with mypy:\n\n```bash\n# Inside the Django container\ndocker compose -f docker-compose.local.yml run --rm django mypy django_overtuned\n```\n\n#### Test Coverage\n\nTo run the tests, check your test coverage, and generate an HTML coverage report:\n\n```bash\n# Run tests with coverage\ndocker compose -f docker-compose.local.yml run --rm django coverage run -m pytest\ndocker compose -f docker-compose.local.yml run --rm django coverage html\n```\n\n#### Running Tests\n\n```bash\n# Run all tests\ndocker compose -f docker-compose.local.yml run --rm django pytest\n\n# Run specific test file\ndocker compose -f docker-compose.local.yml run --rm django pytest path/to/test_file.py\n```\n\n### API Schema Generation\n\nGenerate TypeScript types from Django API schemas:\n\n```bash\njust manage shell -c \"from django.core.management import execute_from_command_line; execute_from_command_line(['manage.py', 'spectacular', '--color', '--file', '/tmp/schema.yml'])\"\nbash scripts/generate-schemas.sh\n```\n\nOr use the available task:\n\n```bash\n# This will generate TypeScript types for the frontend\nbash /app/scripts/generate-schemas.sh\n```\n\n### Background Tasks with Celery\n\nThis application includes Celery for handling background tasks. The Docker setup automatically starts:\n\n- **Celery Worker**: Processes background tasks\n- **Celery Beat**: Handles periodic/scheduled tasks\n- **Flower**: Web-based monitoring tool at \u003chttp://localhost:5555\u003e\n\nTo manually run Celery commands:\n\n```bash\n# Run a Celery worker\ndocker compose -f docker-compose.local.yml run --rm django celery -A config.celery_app worker -l info\n\n# Run Celery beat scheduler\ndocker compose -f docker-compose.local.yml run --rm django celery -A config.celery_app beat\n\n# Monitor tasks with Flower (already running in Docker setup)\n# Access at http://localhost:5555\n```\n\n### Email Testing\n\nThe development environment includes [Mailpit](https://github.com/axllent/mailpit) for email testing:\n\n- **Email interface**: \u003chttp://localhost:8025\u003e\n- All emails sent by the application are captured and displayed\n- No actual emails are sent in development\n- Container starts automatically with `just up`\n\n### Frontend Development\n\nThe Next.js frontend supports:\n\n- **Hot reloading**: Changes are reflected immediately\n- **TypeScript**: Full type safety with auto-generated API types\n- **Tailwind CSS**: Utility-first styling with Tailwind 4\n- **Modern tooling**: Turbopack for fast builds, Biome for linting\n\nFrontend development commands:\n\n```bash\n# Start development server (already running in Docker)\ncd frontend \u0026\u0026 npm run dev\n\n# Build for production\ncd frontend \u0026\u0026 npm run build\n\n# Run linting\ncd frontend \u0026\u0026 npx biome check .\n```\n\n### Monitoring and Observability\n\n#### Sentry Integration\n\nSentry is configured for error logging and performance monitoring:\n\n- Sign up at \u003chttps://sentry.io/signup/?code=cookiecutter\u003e\n- Set the `SENTRY_DSN` environment variable in production\n- Automatic error capturing with 404 logging\n- WSGI application integration included\n\n## 🚢 Deployment\n\n### Production Deployment\n\nThe project includes production-ready Docker configurations:\n\n```bash\n# Build and start production services\ndocker compose -f docker-compose.production.yml up -d --build\n\n# Scale services as needed\ndocker compose -f docker-compose.production.yml up -d --scale django=3\n```\n\n#### Production Services\n\n- **Django**: ASGI application with Uvicorn\n- **Next.js**: Static export or SSR configuration\n- **PostgreSQL**: Production database with backup utilities\n- **Redis**: Session storage and Celery broker\n- **Nginx**: Reverse proxy and static file serving\n- **Traefik**: Load balancing and SSL termination\n\n#### Environment Configuration\n\nCreate production environment files:\n\n```bash\n# Required environment files for production\n.envs/.production/.django\n.envs/.production/.postgres\n.envs/.production/.nextjs\n```\n\nKey production settings:\n\n- Set `DEBUG=False`\n- Configure `ALLOWED_HOSTS`\n- Set secure `SECRET_KEY`\n- Configure database credentials\n- Set up Sentry DSN\n- Configure email backend (SMTP)\n\n### CI/CD Pipeline\n\nThe project structure supports modern CI/CD workflows:\n\n- **Testing**: Automated test runs with pytest\n- **Code Quality**: Ruff, mypy, and Biome checks\n- **Type Safety**: Automatic API schema generation\n- **Container Builds**: Multi-stage Docker builds\n- **Security Scanning**: Dependency vulnerability checks\n\n## 🛠️ Development Tools\n\n### Code Quality\n\n- **Ruff**: Fast Python linter and formatter\n- **mypy**: Static type checking for Python\n- **djLint**: Django template linting\n- **Biome**: Fast formatter/linter for TypeScript/JavaScript\n- **Pre-commit hooks**: Automated code quality checks\n\n### Testing\n\n- **pytest**: Python testing framework\n- **Coverage.py**: Code coverage reporting\n- **Factory Boy**: Test data generation\n- **Django Test Client**: API endpoint testing\n\n### Development Utilities\n\n- **Just**: Task runner with predefined commands\n- **Docker Compose**: Consistent development environment\n- **Hot reload**: Both Django and Next.js support live reloading\n- **Debug toolbar**: Django debug toolbar in development\n- **Project renaming scripts**: Cross-platform scripts to rename the entire project\n\n## 📚 Documentation\n\n### API Documentation\n\n- **Swagger UI**: Interactive API documentation at `/api/schema/swagger-ui/`\n- **ReDoc**: Alternative API docs at `/api/schema/redoc/`\n- **OpenAPI Schema**: Machine-readable schema at `/api/schema/`\n\n### Additional Resources\n\n- [Django Documentation](https://docs.djangoproject.com/)\n- [Django REST Framework](https://www.django-rest-framework.org/)\n- [Next.js Documentation](https://nextjs.org/docs)\n- [Celery Documentation](https://docs.celeryq.dev/)\n- [Docker Compose Documentation](https://docs.docker.com/compose/)\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feature-name`\n3. Make your changes and add tests\n4. Run the test suite: `just manage test`\n5. Submit a pull request\n\n### Development Setup for Contributors\n\n```bash\n# Clone your fork\ngit clone https://github.com/your-username/django-overtuned.git\ncd django-overtuned\n\n# Start development environment\njust up\n\n# Run tests\njust manage test\n\n# Check code quality\ndocker compose -f docker-compose.local.yml run --rm django ruff check .\ndocker compose -f docker-compose.local.yml run --rm django mypy django_overtuned\n```\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 👤 Author\n\nTom Blanc\n\n---\n\nBuilt with ❤️ using Django, Next.js, and modern development practices.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomblancdev%2Flaposte-lovely","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftomblancdev%2Flaposte-lovely","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomblancdev%2Flaposte-lovely/lists"}