Sprytne Okazje — promocje, kody rabatowe i wyprzedaże

Generator szkieletu Flask

Generuj strukturę projektu Flask: REST API lub web app. Wybierz SQLAlchemy, auth, Blueprint, testy. Pobierz ZIP z gotowym projektem Python. Bezpłatnie.

Bezpieczne (SSL)
Przetwarzanie Lokalne
100% Darmowe
Instrukcja
  • 1
    Wprowadź dane
    Wpisz treść, wklej tekst lub załaduj plik z dysku.
  • 2
    Kliknij przycisk
    Narzędzie natychmiast przetworzy Twoje dane w przeglądarce.
  • 3
    Pobierz wynik
    Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
function runTool() {
  return "Wynik gotowy w 0.1s";
}

Plików w szkielecie

22 szt.
OK

lista poniżej w ściądze — dokładnie te pliki generuje silnik

Rozmiar paczki ZIP

7 KB

szkielet spakowany do folder .zip (w wyniku tekstowym są te same pliki)

Szablon

API

Wersja Python

Python 3.12
GENERATOR SZKIELETU FLASK
Folder projektu: acme-flask-api
Pakiet Python: acme_flask_api
Szablon: api
Python: 3.12
Opcje: SQLAlchemy, Hooki JWT auth, Bez Celery, Docker, pytest, ruff

DRZEWO PROJEKTU
----------------
acme-flask-api/
  .env.example
  .gitignore
  Dockerfile
  README.md
  acme_flask_api/
    __init__.py
    blueprints/
      __init__.py
      api_v1/
        __init__.py
        routes.py
      health/
        __init__.py
        routes.py
    config.py
    extensions.py
    models.py
  docker-compose.yml
  pyproject.toml
  requirements-dev.txt
  requirements.txt
  run.py
  tests/
    __init__.py
    test_api_v1.py
    test_health.py
  wsgi.py

PLIKI
-----

=== .env.example ===
FLASK_ENV=development
SECRET_KEY=dev-secret-change-me
PORT=5000
DATABASE_URL=sqlite:///app.db
JWT_SECRET_KEY=dev-jwt-secret-change-me


=== .gitignore ===
.venv/
__pycache__/
*.pyc
*.pyo
*.pyd
*.sqlite3
*.db
.env
.pytest_cache/
.coverage
htmlcov/
dist/
build/
*.egg-info/
.DS_Store


=== Dockerfile ===
FROM python:3.12-slim

WORKDIR /app

ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1

COPY requirements.txt /app/requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

COPY . /app

EXPOSE 5000

CMD ["gunicorn", "-b", "0.0.0.0:5000", "wsgi:app"]


=== README.md ===
# acme-flask-api

Ten projekt został wygenerowany za pomocą generatora szkieletu Flask.

## Co otrzymujesz

Szablon API zawiera wersjonowany blueprint API z endpointami JSON.

- Baza danych: włączona (Flask-SQLAlchemy + Flask-Migrate)
- Szkielet JWT: włączony (Flask-JWT-Extended)
- Szkielet Celery: wyłączony
- Pliki Docker: dołączone
- Testy: dołączony szkielet pytest
- Linter: dołączona konfiguracja ruff

## Szybki start (lokalnie)

1. Utwórz wirtualne środowisko i zainstaluj zależności:

   - Utwórz venv: `python -m venv .venv`
   - Aktywuj je, a następnie zainstaluj: `pip install -e .`

2. Skopiuj plik środowiskowy i ustaw sekrety:

   - `cp .env.example .env`

3. Uruchom aplikację:

   - `python run.py`

Otwórz http://127.0.0.1:5000/health, aby zweryfikować, że działa.

## Punkt wejścia WSGI

Na produkcji możesz uruchomić Gunicorn:

   - `gunicorn wsgi:app`

## Struktura pakietu

- Główny pakiet: `acme_flask_api/`
- Blueprinty: `acme_flask_api/blueprints/`
- Konfiguracja: `acme_flask_api/config.py`
- Rozszerzenia: `acme_flask_api/extensions.py`


=== acme_flask_api/__init__.py ===
from flask import Flask

from .config import Config
from .extensions import db
from .extensions import jwt
from .blueprints.health.routes import bp as health_bp
from .blueprints.api_v1.routes import bp as api_v1_bp

def create_app(config_object=Config) -> Flask:
    app = Flask(__name__)
    app.config.from_object(config_object)

    # Inicjalizacja rozszerzeń
    db.init_app(app)
    jwt.init_app(app)

    # Rejestracja blueprintów
    register_blueprints(app)

    return app


def register_blueprints(app: Flask) -> None:
    app.register_blueprint(health_bp)
    app.register_blueprint(api_v1_bp, url_prefix="/api/v1")


=== acme_flask_api/blueprints/__init__.py ===



=== acme_flask_api/blueprints/api_v1/__init__.py ===



=== acme_flask_api/blueprints/api_v1/routes.py ===
from flask_jwt_extended import jwt_required

from flask import Blueprint, jsonify, request

bp = Blueprint("api_v1", __name__)

@bp.get("/ping")
@jwt_required(optional=True)
def ping():
    return jsonify({"ok": True, "message": "pong", "ip": request.remote_addr})


=== acme_flask_api/blueprints/health/__init__.py ===



=== acme_flask_api/blueprints/health/routes.py ===
from flask import Blueprint, jsonify

bp = Blueprint("health", __name__)

@bp.get("/health")
def health():
    return jsonify({"status": "ok"})


=== acme_flask_api/config.py ===
import os

class Config:
    SECRET_KEY = os.getenv("SECRET_KEY", "dev-secret-change-me")
    JSON_SORT_KEYS = False
    SQLALCHEMY_DATABASE_URI = os.getenv("DATABASE_URL", "sqlite:///app.db")
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    JWT_SECRET_KEY = os.getenv("JWT_SECRET_KEY", SECRET_KEY)


=== acme_flask_api/extensions.py ===
from __future__ import annotations

from flask import Flask

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

from flask_jwt_extended import JWTManager

jwt = JWTManager()

def init_extensions(app: Flask) -> None:
    db.init_app(app)
    jwt.init_app(app)


=== acme_flask_api/models.py ===
from __future__ import annotations

from .extensions import db


class Example(db.Model):
    __tablename__ = "examples"

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(120), nullable=False)

    def __repr__(self) -> str:
        return f"<Example {self.id} {self.name}>"


=== docker-compose.yml ===
services:
  app:
    build: .
    ports:
      - "5000:5000"
    env_file:
      - .env


=== pyproject.toml ===
[project]
name = "acme-flask-api"
version = "0.1.0"
description = "Generated Flask starter project"
requires-python = ">=3.12"
dependencies = [
  "Flask>=3.0",
  "Flask-SQLAlchemy>=3.1",
  "Flask-Migrate>=4.0",
  "Flask-JWT-Extended>=4.6",
  "python-dotenv>=1.0"
]

[build-system]
requires = ["setuptools>=68"]
build-backend = "setuptools.build_meta"


[project.optional-dependencies]
dev = [
  "pytest>=8.0",
  "pytest-cov>=5.0",
  "ruff>=0.4"
]


[tool.ruff]
line-length = 100
select = ["E", "F", "I"]


=== requirements-dev.txt ===
pytest>=8.0
pytest-cov>=5.0
ruff>=0.4


=== requirements.txt ===
Flask>=3.0
Flask-SQLAlchemy>=3.1
Flask-Migrate>=4.0
Flask-JWT-Extended>=4.6
python-dotenv>=1.0


=== run.py ===
import os

from dotenv import load_dotenv

from acme_flask_api import create_app

load_dotenv()

app = create_app()

if __name__ == "__main__":
    port = int(os.getenv("PORT", "5000"))
    app.run(host="0.0.0.0", port=port, debug=True)


=== tests/__init__.py ===



=== tests/test_api_v1.py ===
from acme_flask_api import create_app


def test_api_ping():
    app = create_app()
    client = app.test_client()
    resp = client.get("/api/v1/ping")
    assert resp.status_code == 200
    payload = resp.get_json()
    assert payload.get("ok") is True


=== tests/test_health.py ===
from acme_flask_api import create_app


def test_health_ok():
    app = create_app()
    client = app.test_client()
    resp = client.get("/health")
    assert resp.status_code == 200
    assert resp.get_json()["status"] == "ok"


=== wsgi.py ===
from acme_flask_api import create_app

app = create_app()
Plik Co zawiera (z kodu generatora)
.env.example wzór zmiennych środowiskowych: SECRET_KEY, PORT + DATABASE_URL / JWT_SECRET_KEY / CELERY_* wg opcji
.gitignore ignoruje .venv/, __pycache__/, .env, bazy sqlite i artefakty budowania
Dockerfile obraz python:3.12-slim, instalacja requirements, EXPOSE 5000, start gunicorn wsgi:app
README.md instrukcja szybkiego startu: venv, pip install -e ., python run.py, punkty końcowe i struktura pakietu
acme_flask_api/__init__.py fabryka create_app(): konfiguracja, inicjalizacja rozszerzeń i rejestracja blueprintów
acme_flask_api/blueprints/__init__.py znacznik pakietu blueprintów
acme_flask_api/blueprints/api_v1/__init__.py znacznik pakietu blueprintu API
acme_flask_api/blueprints/api_v1/routes.py endpoint GET /api/v1/ping (JSON) — przy JWT z dekoratorem jwt_required(optional=True)
acme_flask_api/blueprints/health/__init__.py znacznik pakietu blueprintu health
acme_flask_api/blueprints/health/routes.py endpoint GET /health zwracający JSON {"status": "ok"} — do monitoringu i testów
acme_flask_api/config.py klasa Config: SECRET_KEY, JSON_SORT_KEYS + SQLALCHEMY_DATABASE_URI / JWT_SECRET_KEY z env
acme_flask_api/extensions.py instancje rozszerzeń poza fabryką (db, jwt) + init_extensions(app)
acme_flask_api/models.py przykładowy model SQLAlchemy (tabela examples: id, name) na bazie db z extensions
docker-compose.yml usługa app (build ., port 5000, env_file .env) + redis przy Celery
pyproject.toml metadane projektu i lista zależności (requires-python wg wybranej wersji) — instalacja przez pip install -e .
requirements-dev.txt zależności deweloperskie: pytest, pytest-cov, ruff — tylko gdy wybrałeś testy lub linter
requirements.txt zależności produkcyjne: Flask>=3.0, python-dotenv + ewentualnie SQLAlchemy/Migrate, JWT, Celery
run.py uruchomienie deweloperskie: load_dotenv() i app.run(host="0.0.0.0", port z PORT, debug=True)
tests/__init__.py znacznik pakietu testów
tests/test_api_v1.py test pytest: GET /api/v1/ping zwraca 200 i ok=true
tests/test_health.py test pytest: GET /health zwraca 200 i status ok na test_client()
wsgi.py punkt wejścia WSGI dla produkcji: gunicorn wsgi:app

Wirtualne środowisko (venv): wynik nie zawiera zainstalowanych pakietów — po rozpakowaniu utwórz środowisko poleceniem python -m venv .venv, aktywuj je (Linux/macOS: source .venv/bin/activate, Windows: .venv\Scripts\activate) i zainstaluj projekt przez pip install -e . albo pip install -r requirements.txt. Dzięki temu zależności nie mieszają się z systemowym Pythonem, a .gitignore już wyklucza .venv/ z repozytorium. Sekrety (SECRET_KEY, hasła baz) trzymaj w .env — wzór jest w .env.example, a sam plik .env nigdy nie trafia do gita.

Szkielet Flask: od wygenerowania do produkcji

Fabryka i blueprinty

Szkielet używa wzorca application factory (create_app() w __init__.py) i blueprintów — health zawsze, api_v1 w szablonach API i fullweb, web w fullweb. Taki układ skaluje się bez przekształcania jednoplikowej apki: nowe domeny dodajesz jako kolejne blueprinty, a testy startują na create_app().

Co włączyć, a co dołożyć samemu

SQLAlchemy daje model przykładowy i migracje (Flask-Migrate), JWT — szkielet konfiguracji i dekorator na /ping, Celery — fabrykę workera i przykładowe zadanie. To punkty startowe: modele, uprawnienia i kolejki dopisujesz w swoim temacie. Szablon minimalny zostawia czystą apkę z /health.

Uruchomienie i weryfikacja

Lokalnie: python run.py (port z PORT, domyślnie 5000) i sprawdź /health — powinno zwrócić status ok. Testy: pytest (gdy włączone). Produkcja: gunicorn wsgi:app — plik wsgi i Dockerfile są już ustawione pod ten start, compose dorzuca redis przy Celery.

Bezpieczeństwo startu

Sekrety trafiają do .env (wzór w .env.example), a domyślne wartości typu dev-secret-change-me służą wyłącznie do lokalnego startu — przed wdrożeniem ustaw własne. .gitignore blokuje .env i bazy sqlite, debug=True zostaje tylko w run.py, bo gunicorn go nie używa.

Wskazówka: kafelki nad wynikiem pokazują liczbę plików szkieletu, rozmiar paczki ZIP, szablon i wersję Pythona — a ściągę pod wynikiem zawsze możesz porównać z tym, co faktycznie wygenerował silnik dla Twoich opcji.

Oceń to narzędzie:

Powiązane narzędzia

Inne narzędzia, które mogą Ci się przydać

Generator szkieletu Flask – Python boilerplate bez konfiguracji od zera

Flask to minimalistyczny web framework Pythona – elastyczny i bez narzuconej struktury, co oznacza że każdy projekt zaczyna się inaczej. Narzędzie generuje spójną, profesjonalną strukturę projektu Flask na podstawie wybranych komponentów: bazy danych, autoryzacji, testów i deployment.

generator Flask boilerplate szkielet Flask Python Flask REST API starter Flask project structure

Dostępne konfiguracje projektu

Tryb aplikacji: REST API (JSON endpoints) lub Web App (Jinja2 templates + forms). Baza danych: SQLAlchemy + SQLite (dev), PostgreSQL lub MySQL. Migracje: Flask-Migrate (Alembic). Auth: Flask-Login (session) lub JWT (flask-jwt-extended). Walidacja: Marshmallow lub WTForms. Cache: Flask-Caching (Redis/Memcached).

Struktura katalogów projektu

app/__init__.py (Application Factory). app/models.py – modele SQLAlchemy. app/routes/ – Blueprints (moduły routerów). app/schemas.py – Marshmallow schemas (walidacja + serializacja). app/config.py – konfiguracja per-environment. tests/ – pytest fixtures + testclient. requirements.txt + .env.example + Dockerfile.

Application Factory pattern

Zamiast globalnego app = Flask(__name__): def create_app(config): app = Flask(__name__); app.config.from_object(config); db.init_app(app); return app. Korzyści: wiele instancji aplikacji (testy), swobodne importowanie modeli bez circular imports, łatwe przełączanie konfiguracji (dev/test/prod).

Testing z pytest i Flask-Testing

Flask testclient: app.test_client(). Fixture: @pytest.fixture def client(): app = create_app("testing"); yield app.test_client(). Request: client.get("/api/users"). Assert: response.status_code == 200. Factory Boy: generowanie obiektów testowych. Coverage: pytest --cov=app --cov-report=html.

Jak działa generator szkieletu Flask

Generator działa jak konfigurator szablonów: każda opcja zaznaczona w formularzu — tryb aplikacji, baza danych, migracje, uwierzytelnianie, walidacja, cache — odpowiada zestawowi plików i fragmentów kodu zapisanych jako osobne szablony. Po zatwierdzeniu wyborów narzędzie najpierw rozwiązuje zależności między komponentami (wybór PostgreSQL pociąga za sobą sterownik bazy i zmienną połączenia w konfiguracji, wybór JWT wyklucza sesyjne widoki logowania), a dopiero potem renderuje drzewo katalogów projektu.

Mechanizm jest warunkowy. Trzon szkieletu — katalog aplikacji z fabryką, katalog na routery, katalog testów, pliki konfiguracyjne — pozostaje taki sam w każdej kombinacji, a różnice powstają na poziomie wstawianych bloków. Szablony korzystają z instrukcji warunkowych, dlatego plik z zależnościami zawiera wyłącznie biblioteki wynikające z wybranych opcji, a plik ze zmiennymi środowiskowymi i Dockerfile dostają właściwe wpisy dopiero po wyborze konkretnej bazy lub mechanizmu autoryzacji. Niezależnie od kombinacji struktura katalogów wygląda podobnie — zmienia się głównie zawartość plików.

Trzeci element to rozdzielenie konfiguracji od kodu. Generator przygotowuje osobne klasy konfiguracyjne dla środowiska deweloperskiego, testowego i produkcyjnego, a wartości wrażliwe przenosi do zmiennych środowiskowych. Cały proces to zwykłe renderowanie tekstu do plików: narzędzie nie uruchamia kodu, nie łączy się z bazą i nie instaluje zależności, więc wynik można najpierw przejrzeć, poprawić i dopiero wtedy wgrać do repozytorium.

Przykład: projekt REST API z PostgreSQL, JWT i Redisem

  1. Wybierasz tryb REST API. Zamiast szablonów Jinja i formularzy generator przygotuje moduły routerów zwracające JSON oraz spójną obsługę błędów w tym samym formacie.
  2. Ustawiasz bazę i migracje. Wybierasz PostgreSQL oraz Flask-Migrate. Do listy zależności trafiają wtedy Flask-SQLAlchemy, sterownik PostgreSQL i Flask-Migrate, a do konfiguracji — adres połączenia czytany ze zmiennej środowiskowej.
  3. Dodajesz uwierzytelnianie i walidację. Zaznaczasz JWT (flask-jwt-extended) oraz Marshmallow. Powstaje moduł schematów odpowiedzialny za walidację danych wejściowych i serializację odpowiedzi, a endpointy wymagające zalogowania dostają dekoratory sprawdzające token.
  4. Włączasz cache. Przy Flask-Caching wskazujesz backend Redis. W konfiguracji pojawia się typ backendu i adres serwera, a rozszerzenie jest inicjalizowane razem z pozostałymi.
  5. Pobierasz archiwum. W środku znajduje się katalog aplikacji z fabryką, modelami, routerami i schematami, katalog testów z konfiguracją środowiska testowego, plik ze zmiennymi środowiskowymi, Dockerfile oraz lista zależności.
  6. Uruchamiasz projekt. Rozpakowujesz archiwum, tworzysz środowisko wirtualne, instalujesz zależności, kopiujesz plik ze zmiennymi środowiskowymi i uzupełniasz dane połączenia, następnie wykonujesz kolejno inicjalizację migracji, wygenerowanie migracji i jej zastosowanie, a na końcu startujesz serwer deweloperski. Testy sprawdzasz jednym poleceniem pytest.

Wybór w generatorze a zawartość projektu

Opcja w generatorzeBibliotekaCo pojawia się w projekcie
Tryb REST APIbrak dodatkowej bibliotekirouter zwracający JSON, obsługa błędów w JSON, brak katalogu szablonów
Tryb Web AppJinja2 i formularzekatalog szablonów, widoki renderujące HTML, obsługa formularzy
Baza danych (dev)Flask-SQLAlchemymodele, lokalny plik bazy, konfiguracja deweloperska
Baza PostgreSQL lub MySQLFlask-SQLAlchemy i sterownikadres połączenia oraz wpisy w pliku zmiennych środowiskowych
MigracjeFlask-Migrate (Alembic)katalog migracji i polecenia zarządzania schematem bazy
Auth sesyjnyFlask-Loginmodel użytkownika, widoki logowania, ochrona tras
Auth tokenowyflask-jwt-extendedendpointy wydające token i dekoratory wymagające JWT
Walidacja i cacheMarshmallow, WTForms, Flask-Cachingschematy albo formularze, konfiguracja backendu cache

Praktyczne wskazówki

  • Wybieraj tryb świadomie. REST API i Web App różnią się nie tylko warstwą widoków, ale też sposobem walidacji wejścia i formatem odpowiedzi błędów. Zmiana trybu po wygenerowaniu projektu oznacza ręczne przepisanie routerów.
  • Nie mieszaj dwóch mechanizmów logowania. Flask-Login sprawdza się w aplikacji serwerowej z sesją w ciasteczku, JWT — w API dla klientów zewnętrznych. Wybór obu naraz daje dwa równoległe systemy do utrzymania i dwa źródła błędów.
  • Traktuj plik ze zmiennymi środowiskowymi jak dokumentację. Pokazuje, jakich ustawień oczekuje konfiguracja. Uzupełnij go przed pierwszym uruchomieniem, ale prawdziwych sekretów nie wrzucaj do repozytorium.
  • Migracje włącz od początku. Dodanie Flask-Migrate do istniejącego projektu wymaga ręcznego przygotowania katalogu migracji i porównania modeli ze stanem bazy. Prościej zacząć od inicjalizacji na pustej bazie i generować migrację po każdej zmianie modeli.
  • Dockerfile to punkt wyjścia, nie gotowy deployment. Do uruchomienia lokalnego wystarcza, ale w produkcji zwykle potrzebujesz serwera WSGI, użytkownika innego niż root, reverse proxy oraz osobnych usług bazy i Redisa.

Ograniczenia generatora

  • Brak logiki biznesowej. Narzędzie tworzy strukturę i połączenia między bibliotekami, ale nie wymyśli modeli domenowych, relacji w bazie ani reguł uprawnień. To trzeba dopisać samodzielnie.
  • Nie weryfikuje zgodności wersji. Lista zależności zawiera nazwy bibliotek wynikające z wybranych opcji, ale nie sprawdza, czy wszystkie wersje pasują do siebie i do używanej wersji Pythona — to test po instalacji.
  • Pomija konfigurację produkcyjną. Nie generuje ustawień serwera WWW, reverse proxy, certyfikatów, kolejki zadań ani monitoringu. Warstwa wdrożeniowa zostaje po stronie użytkownika.
  • Nie tworzy migracji ani danych startowych. Pierwszą migrację trzeba wygenerować samemu po napisaniu modeli, a dane początkowe, konta administracyjne czy skrypty zasilające bazę nie są częścią szkieletu.

Najczęstsze pytania

Flask czy FastAPI – co wybrać w 2024?

Flask: większy ekosystem, dojrzałe rozszerzenia (Flask-Admin, Flask-SQLAlchemy), świetny dla web app + API, łatwiejszy dla początkujących. FastAPI: automatyczna dokumentacja OpenAPI, walidacja Pydantic, async/await natywnie, szybszy (ASGI). Wybór: Flask dla aplikacji CRUD i web, FastAPI dla pure API z dużym ruchem.

Jak zarządzać środowiskami (dev/prod) w Flask?

python-dotenv + .env plik. Config klasy: class DevelopmentConfig: DEBUG=True; class ProductionConfig: DEBUG=False. create_app(os.getenv("FLASK_ENV","development")). Zmienne wrażliwe (SECRET_KEY, DATABASE_URL): zawsze z env, nigdy w kodzie.

Jak wdrożyć Flask na produkcję?

Gunicorn: gunicorn -w 4 -b 0.0.0.0:8000 "app:create_app()". Nginx jako reverse proxy (upstream do Gunicorn). Supervisor lub systemd: auto-restart przy awarii. Docker: FROM python:3.12-slim + pip install + CMD gunicorn. Heroku/Railway: Procfile: web: gunicorn app:create_app().

Co to są Blueprints i kiedy ich używać?

Blueprint to moduł grupujący powiązane routes, templates, static files. Przykład: auth_bp = Blueprint("auth", __name__, url_prefix="/auth"). Kiedy używać: aplikacja > 5-10 routerów, różne obszary funkcjonalne (auth, admin, api, blog). Blueprints nie są modułami – mogą importować modele z app/.

Jak dodać CORS do Flask API?

pip install flask-cors. from flask_cors import CORS. CORS(app, origins=["https://frontend.com"]). Dla all origins (dev): CORS(app). Per-route: @cross_origin(). Preflight OPTIONS: obsługiwane automatycznie. Credentials: CORS(app, supports_credentials=True).

Czy generator szkieletu Flask jest darmowy?

Tak, narzędzie działa w przeglądarce bez rejestracji, a wygenerowany kod możesz wykorzystać w dowolnym projekcie. Nie ma limitu liczby wygenerowanych szkieletów.

Czym różni się tryb REST API od Web App?

Tryb REST API przygotowuje routery zwracające JSON i obsługę błędów w tym formacie, bez katalogu szablonów. Tryb Web App dodaje szablony Jinja2, widoki HTML i obsługę formularzy.

Czy mogę wybrać jednocześnie Flask-Login i JWT?

Technicznie da się połączyć oba mechanizmy, ale generator traktuje je jako alternatywne rozwiązania tego samego problemu. Wybór jednego z nich daje spójniejszy i łatwiejszy w utrzymaniu kod.

Jakie polecenia uruchomić po wygenerowaniu projektu?

Po rozpakowaniu archiwum zainstaluj zależności, skopiuj plik ze zmiennymi środowiskowymi i uzupełnij dane, następnie wykonaj inicjalizację migracji, wygenerowanie migracji oraz jej zastosowanie, a na końcu uruchom serwer deweloperski.

Czy wygenerowany szkielet nadaje się od razu na produkcję?

Struktura projektu i Dockerfile są dobrym punktem wyjścia, ale przed wdrożeniem trzeba dodać serwer WSGI, zabezpieczyć sekrety, skonfigurować bazę i cache jako osobne usługi oraz włączyć monitoring i logowanie błędów.

Powiązane narzędzia: generator szkieletu Express.js, generator GitLab CI/CD i walidator JSON.

Zainstaluj Webp.pl Miej narzędzia we własnej kieszeni!