FARM-stackgids: zo bouw je fullstack-apps met FastAPI, React & MongoDB
Leer razendsnel fullstack webapps bouwen met de FARM-stack (FastAPI, React, MongoDB). Deze beginnersvriendelijke gids behandelt setup, features en in één klik deployen.
De fullstack FastAPI-, React-, MongoDB (FARM) applicatiegenerator is een krachtige tool die het maken van productieklare webapplicaties stroomlijnt. Door FastAPI voor de backend, React voor de frontend en MongoDB als schaalbare NoSQL-database te integreren, stelt de FARM-generator Python-ontwikkelaars in staat om snel robuuste applicaties te scaffolden met minimale setup. Deze tool is ideaal voor developers die zich willen richten op features bouwen in plaats van boilerplate configureren.
Dit artikel introduceert de FARM-applicatiegenerator, legt de belangrijkste features uit, geeft stapsgewijze installatie-instructies en demonstreert de mogelijkheden met een praktijkvoorbeeld: een takenbeheerapplicatie. Ons doel is te laten zien hoe de generator fullstack-ontwikkeling vereenvoudigt en Python-ontwikkelaars helpt schaalbare, productieklare applicaties te bouwen.
De FARM-generator automatiseert het opzetten van een complete webapplicatiestack met de volgende componenten:
Fullstack-setup: Genereert een FastAPI-backend, een React-frontend en een MongoDB-database, naadloos geïntegreerd voor snelle ontwikkeling.
Vooraf geconfigureerde authenticatie: Bevat OAuth2 met JWT, magic link-authenticatie en cookiemanagement voor veilige gebruikerstoegang. OAuth2 met JWT is als een beveiligde “VIP-pas” (JWT-code) die je na inloggen krijgt om privégebieden te betreden.
Docker Compose-integratie: Levert vooraf geconfigureerde Docker Compose-bestanden voor eenvoudige lokale ontwikkeling en testing.
Operationele tools: Integreert Celery voor asynchrone taakverwerking, Traefik voor load balancing en GitHub Actions voor CI/CD, zodat je een productieklare omgeving hebt.
Tijdsbesparing: Haalt repetitieve setuptaken weg, zoals authenticatie of databaseverbindingen configureren, zodat je direct kunt beginnen met coderen.
Best practices: Zorgt voor een schaalbare, veilige en onderhoudbare projectstructuur die voldoet aan industriestandaarden.
Flexibiliteit: Biedt een aanpasbare basis die je kunt uitbreiden naar de behoeften van je project.
De MongoDB FastAPI Application Generator draaien
Om de mogelijkheden van de generator te illustreren, lopen we de setup van een voorbeeldproject door. We gaan ervan uit dat je Python 3.8+, Node.js, Docker en Docker Compose hebt geïnstalleerd.
Stapsgewijze installatie-instructies
Om de mogelijkheden van de generator te laten zien, maken we een voorbeeldproject genaamd task-manager. Zorg dat je het volgende hebt geïnstalleerd:
Python 3.11+: Bij voorkeur 3.12, controleer met python3.12 --version.
Node.js: Voor de React-frontend.
Docker Desktop: Voor containerized development.
MongoDB: Lokale installatie (bijv. via Homebrew met brew install [email protected]) of MongoDB Atlas (gebruik een connection URI zoals mongodb+srv://:@cluster0.mongodb.net/?retryWrites=true&w=majority).
Cookiecutter: Voor het genereren van de projectsjabloon.
Hatch: Voor dependencybeheer.
MongoDB Compass (optioneel): Voor databasevisualisatie.
Maak voordat je verdergaat een virtuele omgeving met /usr/local/bin/python3.12 -m venv task-manager-venv en activeer die met source task-manager-venv/bin/activate.
Installeer de cookiecutter-library:pip install cookiecutter
Genereer het project: Gebruik de FARM-generator om een project te maken:
cookiecutter https://github.com/mongodb-labs/full-stack-fastapi-mongodb --no-input project_name="task-manager"cd task-managerMogelijk gemaakt door
Installeer MongoDB lokaal of gebruik MongoDB Atlas:
Voor Atlas meld je aan, maak een gratis cluster en haal een connection string op (bijv. mongodb+srv://:@cluster0.mongodb.net/?retryWrites=true&w=majority) om in je .env-bestand te gebruiken.
Werk bij met je MongoDB-URI, databasenaam en secrets:
MONGODB_URI=mongodb://localhost:27017
MONGO_DATABASE=task_manager
SECRET_KEY=your-secret-key
FIRST_SUPERUSER=[email protected]FIRST_SUPERUSER_PASSWORD=changethisMogelijk gemaakt door
Test authenticatie: Gebruik Swagger UI (/docs) om /auth/login of /auth/magic-link endpoints te testen.
Stel CI/CD in: Push naar GitHub om de meegeleverde GitHub Actions-workflows te triggeren.
Verken de gegenereerde fullstack-projectstructuur
Wanneer je de FARM-generator gebruikt, bouwt deze een task-manager-project waarin alles netjes is georganiseerd. Zie het als een prefab huis waarin elke kamer een functie heeft:
backend/: Dit is de keuken waar de FastAPI-backend draait. Hij bevat mappen zoals app/ (voor je API-code) en conf/ (voor instellingen) om taken en data af te handelen.
frontend/: Dit is de woonkamer waar gebruikers je website zien, aangedreven door Next.js/React. De map app/ bevat pagina’s (bijv. about, TaskList) met bestanden zoals layout.tsx (de paginaraamwerk) en page.tsx (de inhoud). De map public/ slaat dingen op zoals het icoon van je site.
Overige bestanden: Je vindt docker-compose.yml (om alles met Docker te draaien), .env (je geheime instellingen) en .github/workflows/ (voor automatisch testen wanneer je je code deelt).
Deze setup is klaar om te groeien, en de generator voegt handige tools toe om development makkelijker te maken!
Wat je kunt doen met de features van de generator
De FARM-generator wordt geleverd met krachtige ingebouwde tools om allerlei projecten te maken. Hier is een eenvoudige kijk op wat ze doen en hoe ze helpen:
Docker Compose-integratie: geoptimaliseerd voor lokale ontwikkeling
Wat het doet: Docker Compose is als een magische knop die je hele project (backend, frontend, database) met één command opzet en draait. Het gebruikt containers om alles gescheiden te houden en is gemakkelijk lokaal te testen.
Hoe het helpt: Je kunt je task-manager-app starten met docker compose up -d en stoppen met docker compose down. Perfect om ideeën uit te proberen zonder je computer te vervuilen. Check de status met docker compose ps—als alles “Up” is, zit je goed!
Voorbeeld: Na het opzetten van je project, voer je simpelweg uit:
Open http://localhost:3000 om je frontend te zien, en je draait alles lokaal!
Ingebouwd authenticatiesysteem
Wat het doet: Dit voegt een loginsysteem toe met gebruikersaccounts, inclusief een standaard superuser (zoals [email protected] met wachtwoord changethis). Het gebruikt OAuth2 met JWT-tokens (beveiligde inlogcodes) en magic links (emaillinks om in te loggen).
Hoe het helpt: Je kunt gebruikers laten registreren, inloggen of een magic link gebruiken om je app te betreden. Probeer het op http://localhost/docs in Swagger UI—zoek naar /api/v1/login/oauth om het inloggen te testen. Ideaal voor apps waar alleen bepaalde mensen dingen mogen zien, zoals een privé takenlijst.
Voorbeeld: Log in met de standaardgebruiker:
Ga naar http://localhost/docs.
Zoek /api/v1/login/oauth, voer [email protected] en dit wachtwoord in, en klik op “Execute”. Je krijgt een JWT-token om te gebruiken voor privépagina’s!
De task manager API
Demo voor Oauth API
Response voor Oauth API
FastAPI-backendfeatures
Laten we de belangrijkste features van de FastAPI-aangedreven backend bekijken en hoe die databasehandelingen, API-ontwerp en schaalbaarheid eenvoudiger maken.
MongoDB Motor: Dit is de motor die supersnel met je MongoDB-database praat, zelfs bij veel gelijktijdige requests.
MongoDB ODMantic: Zie dit als een helper die data in MongoDB makkelijker opslaat en terugvindt, alsof je taken netjes sorteert in doosjes.
Standaard CRUD-ondersteuning: CRUD staat voor create, read, update, delete. Deze feature geeft je kant-en-klare tools om data (zoals taken) toe te voegen, te bekijken, te wijzigen of te verwijderen zonder van nul te beginnen.
Gebaseerd op standaarden: Volgt regels zoals OpenAPI en JSON Schema, zodat je API duidelijk is en werkt met andere tools of apps.
Hoe het helpt: Je bouwt snel een backend om taken op te slaan. De generator zet dit klaar, zodat jij alleen je eigen ideeën toevoegt, zoals nieuwe taakfeatures, met de geleverde code.
Voorbeeld: Voeg een snelle taakviewer toe in backend/app/api/tasks.py:
from fastapi import APIRouter, Depends
from odmantic import AIOEngine, Model
from motor.motor_asyncio import AsyncIOMotorClient
router = APIRouter(prefix="/tasks", tags=["tasks"])classTask(Model):
title:strasyncdefget_db():
client = AsyncIOMotorClient("mongodb://localhost:27017")return AIOEngine(client, database="task_manager")@router.get("/")# View all tasksasyncdefget_tasks(db: AIOEngine = Depends(get_db)):returnawait db.find(Task)Mogelijk gemaakt door
Test het op http://localhost/api/v1/tasks na opnieuw bouwen met docker compose up --build.
Next.js/React-frontend
De React-frontend is waar gebruikers met je app interacteren. Laten we bekijken hoe die is opgebouwd en welke tools zijn inbegrepen om strakke, responsieve pagina’s te bouwen.
Middleware-autorisatie: Werkt als portier en checkt of gebruikers zijn ingelogd voordat ze bepaalde pagina’s zien (bijv. alleen ingelogde gebruikers zien /TaskList).
Formvalidatie met React Hook Form: Zorgt dat formulieren (zoals een taak-toevoegformulier) de juiste info bevatten voordat ze worden opgeslagen, zodat er geen lege taken doorsluipen.
State management met Redux: Houdt bij wat er geselecteerd is, zoals welke taken, waardoor je app soepel blijft werken, ook met veel data.
CSS en templates met TailwindCSS, HeroIcons en HeadlessUI: Dit zijn kant-en-klare designtools. TailwindCSS stijlt je pagina’s, HeroIcons voegt mooie iconen toe en HeadlessUI levert goed werkende knoppen en menu’s.
Hoe het helpt: Je bouwt eenvoudig een fraai ogende takenpagina met gebruiksvriendelijke formulieren en beveiligde toegang. De generator zet het design klaar, zodat jij je kunt focussen op taken of andere features.
Voorbeeld: Voeg een simpel taakformulier toe in frontend/app/TaskList/page.tsx:
Ga naar http://localhost:3000/TaskList om een taak toe te voegen.
Je task manager uitbreiden
De generator geeft je een solide start voor een task manager. Je kunt bijvoorbeeld:
Een knop toevoegen om taken als voltooid te markeren met de CRUD-tools.
Authenticatie gebruiken om je takenlijst privé te houden.
Stijlen met TailwindCSS om het er top uit te laten zien.
Celery instellen om taakherinneringen per e-mail te versturen.
Andere ideeën om te verkennen
Met deze features bouw je meer dan alleen een task manager:
Blog of website: Sla posts op in MongoDB, toon ze met FastAPI en ontwerp een mooie site met Next.js.
Online winkel: Bewaar producten in MongoDB, verwerk orders met Celery en maak een shoppagina met Next.js.
Live-updates: Toon real-time info (zoals een score) met MongoDB, de livefeatures van FastAPI en een Next.js-dashboard.
Conclusie
De FARM-applicatiegenerator stroomlijnt fullstack-ontwikkeling met een vooraf geconfigureerde, productieklare stack die FastAPI, React en MongoDB integreert. De automatisering van setuptaken, naleving van best practices en flexibele architectuur maken het een waardevolle tool voor Python-ontwikkelaars. Of je nu een task manager of een complexe webapplicatie bouwt, de FARM-generator versnelt de ontwikkeling en borgt schaalbaarheid. Probeer het vandaag nog met de installatie-instructies en bekijk de volledige documentatie in de GitHub-repository om het volle potentieel te benutten!
Wil je meer leren? Bekijk dan deze handige bronnen:
Officiële repository:Bekijk de broncode, lees de volledige documentatie en volg updates of draag bij.
FastAPI-documentatie:Leer meer over de features van FastAPI en hoe het de backend aanstuurt.
Introduction to FastAPI Course: Bouw robuuste, productieklare API’s met FastAPI, beheers HTTP-operaties, validatie en async execution om efficiënte data- en ML-pijplijnen te maken.
FAQs
Why should I use the FARM generator?⌄
Het helpt developers om snel projecten te starten met industriestandaarden, waaronder security (OAuth2/JWT), schaalbaarheid (Docker/Celery) en onderhoudbaarheid. In plaats van alles handmatig te configureren, kun je je direct focussen op het bouwen van features.
Can I use the FARM generator if I’m new to web development?⌄
Zeker! De generator verzorgt de complexe setup (zoals authenticatie en Docker) voor je, zodat beginners zich kunnen richten op het leren van FastAPI, React of MongoDB zonder vast te lopen op configuratie. Basiskennis van Python en JavaScript helpt wel bij het aanpassen van het project.
Can I use this for mobile app development?⌄
Ja, hoewel de FARM-generator een webapplicatie maakt, kun je de FastAPI-backend gebruiken met mobiele apps door de API’s aan te roepen. De React-frontend kan ook voor mobiel worden aangepast met frameworks zoals React Native, al vergt dat extra setup.
Can I deploy my app online for others to use?⌄
De generator bevat Docker en CI/CD-setup om je app te deployen naar diensten zoals AWS, GCP, DigitalOcean, Heroku en meer!
Can I use this without knowing Docker?⌄
Ja, maar Docker maakt het een stuk eenvoudiger. Zonder Docker moet je MongoDB apart installeren en servers handmatig draaien.
Karen is een Data Engineer met een passie voor het bouwen van schaalbare dataplatforms. Ze heeft ervaring met infrastructuurautomatisering met Terraform en deelt haar inzichten graag in blogposts en tutorials. Karen is een community builder en ze zet zich in om verbindingen tussen dataprofessionals te stimuleren.
De fullstack FastAPI-, React-, MongoDB (FARM) applicatiegenerator is een krachtige tool die het maken van productieklare webapplicaties stroomlijnt. Door FastAPI voor de backend, React voor de frontend en MongoDB als schaalbare NoSQL-database te integreren, stelt de FARM-generator Python-ontwikkelaars in staat om snel robuuste applicaties te scaffolden met minimale setup. Deze tool is ideaal voor developers die zich willen richten op features bouwen in plaats van boilerplate configureren.
Dit artikel introduceert de FARM-applicatiegenerator, legt de belangrijkste features uit, geeft stapsgewijze installatie-instructies en demonstreert de mogelijkheden met een praktijkvoorbeeld: een takenbeheerapplicatie. Ons doel is te laten zien hoe de generator fullstack-ontwikkeling vereenvoudigt en Python-ontwikkelaars helpt schaalbare, productieklare applicaties te bouwen.
Kun je wel een opfrisser gebruiken voor MongoDB? Bekijk dan de DataCamp-cursus Introduction to MongoDB in Python.
Wat is de FastAPI Application Generator?
De FARM-generator automatiseert het opzetten van een complete webapplicatiestack met de volgende componenten:
De volledige features vind je in de GitHub-repo.
Voordelen voor developers
De FARM-generator biedt belangrijke voordelen:
De MongoDB FastAPI Application Generator draaien
Om de mogelijkheden van de generator te illustreren, lopen we de setup van een voorbeeldproject door. We gaan ervan uit dat je Python 3.8+, Node.js, Docker en Docker Compose hebt geïnstalleerd.
Stapsgewijze installatie-instructies
Om de mogelijkheden van de generator te laten zien, maken we een voorbeeldproject genaamd
task-manager. Zorg dat je het volgende hebt geïnstalleerd:Maak voordat je verdergaat een virtuele omgeving met
/usr/local/bin/python3.12 -m venv task-manager-venven activeer die metsource task-manager-venv/bin/activate.pip install cookiecutterVoor Atlas meld je aan, maak een gratis cluster en haal een connection string op (bijv. mongodb+srv://:@cluster0.mongodb.net/?retryWrites=true&w=majority) om in je .env-bestand te gebruiken.
Kopieer en bewerk het .env-bestand:
Werk bij met je MongoDB-URI, databasenaam en secrets:
Zorg dat Docker Desktop draait en voer dan uit:
Verken de gegenereerde fullstack-projectstructuur
Wanneer je de FARM-generator gebruikt, bouwt deze een task-manager-project waarin alles netjes is georganiseerd. Zie het als een prefab huis waarin elke kamer een functie heeft:
docker-compose.yml(om alles met Docker te draaien),.env(je geheime instellingen) en.github/workflows/(voor automatisch testen wanneer je je code deelt).Deze setup is klaar om te groeien, en de generator voegt handige tools toe om development makkelijker te maken!
Wat je kunt doen met de features van de generator
De FARM-generator wordt geleverd met krachtige ingebouwde tools om allerlei projecten te maken. Hier is een eenvoudige kijk op wat ze doen en hoe ze helpen:
Docker Compose-integratie: geoptimaliseerd voor lokale ontwikkeling
docker compose up -den stoppen metdocker compose down. Perfect om ideeën uit te proberen zonder je computer te vervuilen. Check de status metdocker compose ps—als alles “Up” is, zit je goed!Voorbeeld: Na het opzetten van je project, voer je simpelweg uit:
Open http://localhost:3000 om je frontend te zien, en je draait alles lokaal!
Ingebouwd authenticatiesysteem
[email protected]met wachtwoordchangethis). Het gebruikt OAuth2 met JWT-tokens (beveiligde inlogcodes) en magic links (emaillinks om in te loggen)./api/v1/login/oauthom het inloggen te testen. Ideaal voor apps waar alleen bepaalde mensen dingen mogen zien, zoals een privé takenlijst.Voorbeeld: Log in met de standaardgebruiker:
/api/v1/login/oauth, voer[email protected]en dit wachtwoord in, en klik op “Execute”. Je krijgt een JWT-token om te gebruiken voor privépagina’s!De task manager API
Demo voor Oauth API
Response voor Oauth API
FastAPI-backendfeatures
Laten we de belangrijkste features van de FastAPI-aangedreven backend bekijken en hoe die databasehandelingen, API-ontwerp en schaalbaarheid eenvoudiger maken.
Voorbeeld: Voeg een snelle taakviewer toe in backend/app/api/tasks.py:
Test het op http://localhost/api/v1/tasks na opnieuw bouwen met docker compose up --build.
Next.js/React-frontend
De React-frontend is waar gebruikers met je app interacteren. Laten we bekijken hoe die is opgebouwd en welke tools zijn inbegrepen om strakke, responsieve pagina’s te bouwen.
Voorbeeld: Voeg een simpel taakformulier toe in frontend/app/TaskList/page.tsx:
Ga naar http://localhost:3000/TaskList om een taak toe te voegen.
Je task manager uitbreiden
De generator geeft je een solide start voor een task manager. Je kunt bijvoorbeeld:
Andere ideeën om te verkennen
Met deze features bouw je meer dan alleen een task manager:
Conclusie
De FARM-applicatiegenerator stroomlijnt fullstack-ontwikkeling met een vooraf geconfigureerde, productieklare stack die FastAPI, React en MongoDB integreert. De automatisering van setuptaken, naleving van best practices en flexibele architectuur maken het een waardevolle tool voor Python-ontwikkelaars. Of je nu een task manager of een complexe webapplicatie bouwt, de FARM-generator versnelt de ontwikkeling en borgt schaalbaarheid. Probeer het vandaag nog met de installatie-instructies en bekijk de volledige documentatie in de GitHub-repository om het volle potentieel te benutten!
Wil je meer leren? Bekijk dan deze handige bronnen: