Skip to main content

A production-ready Django + Vue.js project generator

Project description

Django + Vue.js Project Generator

PyPI version npm version License: MIT

A CLI tool to scaffold production-ready Django + Vue.js full-stack applications with authentication, Docker, and CI/CD out of the box.

Features

  • Django Backend: DRF, JWT authentication, custom user model, PostgreSQL
  • Vue.js Frontend: Vue 3, Vite, Pinia, Vue Router with guards
  • Complete Auth System: Login, register, password reset, profile management
  • Todo CRUD Example: Full working example with create, read, update, delete
  • Docker Ready: Development and production Docker Compose configurations
  • CI/CD Pipeline: GitHub Actions with lint, test, and build stages
  • Code Quality: Pre-commit hooks with Black, Ruff, ESLint, Prettier
  • Celery + Redis: Background task processing (optional)
  • Production Ready: Nginx, Gunicorn, WhiteNoise for static files

Prerequisites

Before you start, ensure you have the following installed on your machine:

Component Required Version Purpose Check Command
Python 3.10+ Backend runtime python3 --version
Node.js 18+ Frontend runtime node --version
npm 9+ Package manager npm --version
Git Latest Version control git --version

Installation Instructions

Python 3.10+:

  • macOS: brew install python@3.11 or download from python.org
  • Ubuntu/Debian: sudo apt update && sudo apt install python3.11 python3.11-venv python3-pip
  • Windows: Download from python.org (check "Add to PATH")

Node.js 18+ & npm:

  • macOS: brew install node or use nvm
  • Ubuntu/Debian: curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt install -y nodejs
  • Windows: Download from nodejs.org

Git:

  • macOS: brew install git (or comes with Xcode)
  • Ubuntu/Debian: sudo apt install git
  • Windows: Download from git-scm.com

Optional (for Docker mode)

To run the project in Docker containers (recommended for production parity):

[!NOTE] If you don't have these tools, django-vue-start will warn you or attempt to handle dependencies (like creating a virtualenv) automatically where possible.

Quick Start

Method 1: Using npx (Recommended)

npx create-django-vue-app my_project
cd my_project
django-vue-start run dev

Method 2: Using pip

# Install the CLI tool
pip install django-vue-start

# Create a new project
django-vue-start new my_project

# Navigate and run
cd my_project
django-vue-start run dev

Method 3: Install npm package globally

npm install -g create-django-vue-app
create-django-vue-app my_project

Running Your Project

After creating a project:

cd my_project

# Start development servers (Django + Vue)
django-vue-start run dev

# Or with Docker
django-vue-start run dev --docker

Access your app:

  • Frontend: http://localhost:5173
  • Backend API: http://localhost:8000/api/
  • API Docs: http://localhost:8000/api/schema/swagger-ui/
  • Django Admin: http://localhost:8000/admin/

CLI Commands

# Create new project
django-vue-start new [project_name]

# Run development servers
django-vue-start run dev          # Local mode (SQLite)
django-vue-start run dev --docker # Docker mode (PostgreSQL)

# Run migrations
django-vue-start run migrate

# Run migrations
django-vue-start run migrate

# Open Django shell
django-vue-start run shell

# Create Superuser (Admin)
cd backend
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
python manage.py createsuperuser

Project Generation Options

django-vue-start new [OPTIONS]

Options:
  --database [postgresql|sqlite|mysql]  Database backend
  --auth [jwt|session]                  Authentication type
  --celery / --no-celery                Include Celery
  --allauth / --no-allauth              Include social auth
  --skip-prompts                        Use defaults

Generated Project Structure

my_project/
├── backend/
│   ├── config/settings/     # Django settings
│   ├── core/                # Custom User model
│   ├── todos/               # CRUD example app
│   ├── .env                 # Environment variables
│   ├── Dockerfile
│   └── requirements.txt
├── frontend/
│   ├── src/
│   │   ├── api/             # Axios with JWT
│   │   ├── components/      # AppHeader, AppFooter
│   │   ├── router/          # Vue Router
│   │   ├── stores/          # Pinia auth store
│   │   └── views/           # Pages (Login, Profile, Todos)
│   └── package.json
├── docker-compose.yml
└── README.md

Built-in Features

Authentication

  • User registration with email
  • Login/logout with JWT cookies
  • Profile editing (username, email)
  • Password change
  • Password reset via email

Todo CRUD Example

  • Create, read, update, delete todos
  • Toggle complete/incomplete
  • User-scoped (each user sees only their todos)

Documentation

Development

Setup for Contributors

# Clone
git clone https://github.com/abdullafajal/django-vue-start.git
cd django-vue-start

# Install
pip install -e .

# Test
pytest tests/ -v

Publishing

PyPI

pip install build twine
python -m build
twine upload dist/*

npm

npm publish --otp=YOUR_2FA_CODE

License

MIT License - see LICENSE file.

Credits

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_vue_start-1.1.5.tar.gz (35.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_vue_start-1.1.5-py3-none-any.whl (63.6 kB view details)

Uploaded Python 3

File details

Details for the file django_vue_start-1.1.5.tar.gz.

File metadata

  • Download URL: django_vue_start-1.1.5.tar.gz
  • Upload date:
  • Size: 35.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.4

File hashes

Hashes for django_vue_start-1.1.5.tar.gz
Algorithm Hash digest
SHA256 c8f3aa23008101bc65ce05162409f13591f0f8626ecdcd1cafa917eab9b2033b
MD5 a051e9d45d3af136efb13ce316aa5e32
BLAKE2b-256 e27c3984872dc674a0bd77498bb693c0c7bfe5a3ccc49941cf26105c165ad9c9

See more details on using hashes here.

File details

Details for the file django_vue_start-1.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for django_vue_start-1.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 d80086e252c03d795d496b45b120a156844146821838466b1d5af50e163828e6
MD5 6c032867de6fdd50ce4040509ebc83d0
BLAKE2b-256 656c0b5d55ccdfaa5c42b425941b25de7cc9dd98e20c623a9f653948ebea358d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page