Skip to main content

File-system routing para Django, inspirado no Next.js App Router.

Project description

🚀 Next-Django

A Developer Experience (DX) mágica do Next.js App Router, construída em cima da fundação sólida e robusta do Django.

O next-django elimina a necessidade de configurar urls.py, gerenciar dezenas de apps fragmentados e lidar com templates confusos. Ele traz roteamento baseado em arquivos (File-System Routing), componentes UI nativos e APIs automáticas com zero dor de cabeça.


✨ Funcionalidades Principais

  • 📁 File-System Routing (UI): Esqueça o urls.py. Crie uma pasta app/sobre/ com um arquivo page.py e a rota /sobre/ é gerada automaticamente. Suporta rotas dinâmicas como [int:id]!
  • 🥷 API Routes (Zero Config): Crie arquivos na pasta api/ e tenha endpoints RESTful gerados automaticamente usando o poder do Django Ninja (com Swagger UI incluso).
  • 🧩 Componentização (UI): Suporte nativo a componentes reutilizáveis estilo React/Vue através do django-cotton. Crie components/ui/button.html e use como <c-ui.button> em qualquer lugar.
  • 🗄️ Modelos Desacoplados: Uma pasta models/ centralizada na raiz do projeto (estilo Prisma/TypeORM), dando adeus à obrigação de ter modelos presos dentro de sub-aplicativos do Django.
  • 🪄 CLI Automático: Um único comando (next-django init) injeta as configurações no seu settings.py, atualiza seu urls.py e gera toda a arquitetura base com Tailwind CSS pré-configurado.

⚡ Quick Start (Passo a Passo)

Comece um projeto moderno em menos de 1 minuto:

1. Crie um projeto Django padrão (se ainda não tiver):

# Crie a pasta e o ambiente virtual
mkdir meu_app && cd meu_app
python -m venv venv
source venv/bin/activate  # (No Windows: venv\Scripts\activate)

# Instale o Django e inicie o projeto na pasta atual (.)
pip install django
django-admin startproject core .

2. Instale o Next-Django:

pip install next-django

3. Inicialize a Mágica (Zero Config):

next-django init

(Este comando cria as pastas app/, api/, components/ e models/, e auto-configura o seu settings.py e urls.py!)

4. Rode o servidor:

python manage.py runserver

Acesse http://127.0.0.1:8000 e veja seu novo framework em ação!


🏗️ Como utilizar a Estrutura

Ao rodar o next-django init, você ganha a seguinte arquitetura:

meu_projeto/
├── app/                  # Rotas de interface (Páginas HTML)
├── api/                  # Rotas de API (JSON/REST)
├── components/           # Componentes visuais reutilizáveis
├── models/               # Banco de dados centralizado
├── core/                 # Configurações originais do Django
└── manage.py

1. Criando Páginas (Pasta app/)

O roteamento segue a estrutura de pastas. O arquivo que renderiza a tela deve se chamar page.py e conter uma função chamada page.

  • app/page.py ➔ Rota: /
  • app/dashboard/page.py ➔ Rota: /dashboard/
  • app/usuarios/[int:id]/page.py ➔ Rota Dinâmica: /usuarios/<id>/
  • app/(auth)/login/page.py ➔ Route Group (ignorado na URL): /login/

Exemplo de app/sobre/page.py:

from django.shortcuts import render

def page(request):
    return render(request, 'page.html', {"titulo": "Sobre Nós"})

2. Criando APIs (Pasta api/)

Cada arquivo criado em api/ (exceto __init__.py) vira uma rota base. O arquivo precisa instanciar um Router do Django Ninja na variável router.

Exemplo de api/produtos.py (Gera a rota /api/produtos/):

from ninja import Router

router = Router()

@router.get("/")
def listar_produtos(request):
    return [{"id": 1, "nome": "Teclado Mecânico"}]

Acesse http://127.0.0.1:8000/api/docs para ver o Swagger gerado automaticamente!

3. Usando Componentes (Pasta components/)

Todo arquivo .html colocado aqui vira uma tag customizada.

  • Arquivo: components/ui/card.html
  • Como usar no seu app/page.html:
<c-ui.card>
    <h2>Conteúdo do Card</h2>
</c-ui.card>

4. Gerenciando Modelos (Pasta models/)

Crie seus modelos separadamente, por exemplo, models/produto.py. Atenção: Para o Django reconhecer seu modelo na hora de rodar as migrações, você precisa importá-lo no arquivo models/__init__.py:

# models/__init__.py
from .produto import Produto

Depois, basta rodar python manage.py makemigrations e python manage.py migrate normalmente!


🤝 Contribuindo

Pull requests são muito bem-vindos! Para mudanças maiores, por favor, abra uma issue primeiro para discutirmos o que você gostaria de mudar.

📄 Licença

MIT License - Sinta-se livre para usar, modificar e distribuir.

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

next_django-0.5.0.tar.gz (7.8 kB view details)

Uploaded Source

Built Distribution

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

next_django-0.5.0-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

File details

Details for the file next_django-0.5.0.tar.gz.

File metadata

  • Download URL: next_django-0.5.0.tar.gz
  • Upload date:
  • Size: 7.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for next_django-0.5.0.tar.gz
Algorithm Hash digest
SHA256 0f339c4584b69707d7a4fd70612b337e23f762e4321444ca79fcbd7d6e65c483
MD5 a78f5190dd847c6d1ecab8df362482ed
BLAKE2b-256 276b48596a832c73d0de221ae6c932173c64a160458a63a66b3cd2f79e968d19

See more details on using hashes here.

File details

Details for the file next_django-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: next_django-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 8.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for next_django-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d46dadae8d268bde2d94dcc187fb2721c5a0da5913f6ef8c8a471f0738cb0725
MD5 c976bdceea823a50fa6cf75da67ad179
BLAKE2b-256 456e553196822a74e5ac16ca4b36e370ba4a1bfe27a9057ad3bc0795a3be29fe

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