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.1.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.1-py3-none-any.whl (63.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: django_vue_start-1.1.1.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.1.tar.gz
Algorithm Hash digest
SHA256 3d0ab1fabec324021b2421c04307e01821f11c613b2ae65f5c626296b2c188c2
MD5 0ff7f2535d14f38dfd9e06c2c4bd8e97
BLAKE2b-256 9cfcbf249d0945b410da3847e951d8d9eb45d8ba9500757f07a4b8261dcf05c0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for django_vue_start-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 feb2a33fd37878f654caa5bc3581d6e2d5171faf98d677a7b9279071a8b54a67
MD5 06327029e9b621ebcca813b34ebe5df8
BLAKE2b-256 1f6c43ae3754ffec181961a07a30aec72eebd82b78b6ae63311c337db87173cb

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