add initial template

This commit is contained in:
Alessio Prato 2025-08-01 23:41:32 +02:00
parent 4ed1e88dc2
commit 45a93e5a23
13 changed files with 457 additions and 13 deletions

View file

@ -1,3 +0,0 @@
# ENV
- MONGO_INITDB_ROOT_USERNAME=
- MONGO_INITDB_ROOT_PASSWORD=

View file

View file

View file

@ -1,15 +1,30 @@
version: '3.8'
services:
mongodb:
image: mongo:8.0.0
container_name: mongodb
restart: unless-stopped
image: mongo:7.0
container_name: simple_mongodb
ports:
- "27017:27017"
environment:
- MONGO_INITDB_ROOT_USERNAME=${MONGO_INITDB_ROOT_USERNAME}
- MONGO_INITDB_ROOT_PASSWORD=${MONGO_INITDB_ROOT_PASSWORD}
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: password
volumes:
- mongo-data:/data/db
- mongodb_data:/data/db
restart: unless-stopped
mongo-express:
image: mongo-express:latest
container_name: mongo_express
ports:
- "8081:8081"
environment:
ME_CONFIG_MONGODB_ADMINUSERNAME: admin
ME_CONFIG_MONGODB_ADMINPASSWORD: password
ME_CONFIG_MONGODB_URL: mongodb://admin:password@mongodb:27017/
depends_on:
- mongodb
restart: unless-stopped
volumes:
mongo-data:
mongodb_data:

22
backend/main.py Normal file
View file

@ -0,0 +1,22 @@
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from routes import router
app = FastAPI(title="Simple Fullstack API")
# CORS per permettere richieste dal frontend
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Includi le route
app.include_router(router)
if __name__ == "__main__":
import uvicorn
print("🚀 Avvio server FastAPI...")
uvicorn.run(app, host="0.0.0.0", port=8000)

View file

@ -0,0 +1,4 @@
fastapi==0.104.1
uvicorn[standard]==0.24.0
pymongo==4.6.0
python-multipart==0.0.6

50
backend/routes.py Normal file
View file

@ -0,0 +1,50 @@
from fastapi import APIRouter, HTTPException
from pymongo import MongoClient
from datetime import datetime
# Router per le API
router = APIRouter()
# Connessione MongoDB
client = MongoClient("mongodb://localhost:27017/")
db = client["simple_db"]
collection = db["items"]
@router.get("/")
def read_root():
"""Root endpoint per test connessione"""
return {"message": "Simple Fullstack API is running!"}
@router.get("/api/data")
def get_data():
"""GET: Ottiene il primo documento dal database"""
try:
# Trova il primo documento disponibile
document = collection.find_one()
if document:
# Converti ObjectId in stringa per JSON serialization
document["_id"] = str(document["_id"])
return {"success": True, "data": document}
else:
return {"success": False, "message": "Nessun dato trovato nel database"}
except Exception as e:
raise HTTPException(status_code=500, detail=f"Errore database: {str(e)}")
@router.post("/api/data")
def create_data():
"""POST: Inserisce un dato hardcoded nel database"""
try:
# Dato hardcoded da inserire
new_item = {
"name": "Item di esempio",
"description": "Questo è un item creato tramite API",
"timestamp": datetime.now().isoformat(),
"value": 42
}
result = collection.insert_one(new_item)
new_item["_id"] = str(result.inserted_id)
return {"success": True, "message": "Dato inserito con successo", "data": new_item}
except Exception as e:
raise HTTPException(status_code=500, detail=f"Errore inserimento: {str(e)}")