Craftplan
Il gestionale di produzione nato per la panetteria di sua moglie
Cosa fa
Un creatore ha costruito per la moglie uno strumento per gestire la produzione della sua panetteria: ricette, ordini, ingredienti, quantità da preparare.
Come guadagna
Presentato su Hacker News dal suo creatore, che non dichiara incassi. Idee nostre per guadagnare con un progetto simile: abbonamento per piccoli laboratori artigianali (forni, pasticcerie, gelaterie).
Rendilo tuo
- Per i forni e le pasticcerie italiane: ordini delle torte, allergeni obbligatori in etichetta, costo per pezzo.
- Il miglior software nasce da un problema vero: parti da un laboratorio che conosci.
Le frasi da scrivere all'AI
1. Base del sito e grafica
Crea un'app web in italiano chiamata "Impasto": gestisce la produzione di un forno o di una pasticceria: ricette in percentuali del panettiere, ordini dei clienti, e ogni sera la lista di cosa preparare domani con le quantità esatte di ogni ingrediente. Usa React, Vite, TypeScript e Tailwind CSS.
Pagine da creare:
1. Pagina iniziale con le funzioni e il prezzo
2. Ricette: ingredienti in percentuale sulla farina, peso del pezzo, resa, allergeni
3. Ordini: clienti (bar, ristoranti, privati) con le quantità per giorno, anche ricorrenti
4. Piano di produzione di domani: pezzi, impasti, ingredienti da pesare
5. Magazzino ingredienti e costi delle ricette
Stile: caldo da forno: sfondo crema #FFF8EB, marrone crosta #92400E, giallo grano #EAB308, carattere "Nunito", numeri grandi da leggere in laboratorio con le mani sporche. Nessuna immagine generica di stock.
Tutto deve funzionare perfettamente da telefono. Tutti i testi in italiano, chiari e senza parole tecniche.
2. Database, account e sicurezza
Collega il progetto a Supabase e attiva la registrazione con email e password.
Crea queste tabelle:
- "ricette": nome, peso del pezzo crudo, ingredienti con percentuale sulla farina, allergeni, scarto di lavorazione
- "clienti" e "ordini": cliente, ricetta, quantità, giorno (o giorni ricorrenti)
- "ingredienti": nome, scorta, costo al kg
Regole di sicurezza obbligatorie:
- ogni laboratorio vede solo i suoi dati
- gli allergeni di ogni ricetta sono obbligatori
Usa esattamente il codice SQL che trovi nei "Dettagli tecnici" di questa scheda: eseguilo nel SQL Editor di Supabase prima di continuare, poi collega le pagine alle tabelle.
3. Dal numero di pezzi ai grammi da pesare
Le ricette si scrivono in percentuali del panettiere: farina 100%, acqua 65%, sale 2%, lievito 1%... più il peso del pezzo crudo e lo scarto (es. 3%).
Ogni sera il piano di domani somma gli ordini (singoli e ricorrenti) per ricetta e calcola quanta farina serve e quindi i grammi di ogni ingrediente (codice nei Dettagli tecnici). Il risultato si stampa o si legge sul tablet: una scheda per impasto con i pesi in grande.
Etichette per i clienti con nome del prodotto, ingredienti in ordine di peso e allergeni in grassetto, come richiede la normativa.
4. Magazzino e costi
Il magazzino scala gli ingredienti usati nel piano di produzione e avvisa quando servono riordini. Costo di ogni ricetta al pezzo dagli ingredienti, per controllare i margini rispetto al prezzo di vendita.
Riepilogo degli ordini per cliente e mese, da usare per le fatture.
5. Pagamenti con Stripe
Aggiungi un abbonamento a 19 € al mese. Gratis l'utente ha: 10 ricette e 10 clienti. Con il piano Pro sblocca: ricette e clienti illimitati, ordini ricorrenti, magazzino, costi ed etichette.
A pagamento riuscito il webhook porta l'utente al piano Pro; se l'abbonamento viene disdetto o non rinnovato lo riporta al piano gratuito.
Per la sessione di pagamento e il webhook segui la guida "Pagamenti con Stripe" di Fattibile.
6. Controlli specifici di questo progetto
Oltre ai controlli della guida "Controllo finale", verifica in particolare:
1. Calcoli: 100 baguette da 300 g con idratazione 70% e scarto 3%: controlla a mano la farina e l'acqua calcolate.
Correggi quello che non va e scrivimi cosa hai cambiato.
Dettagli tecnici
Dalle percentuali del panettiere ai grammi
Il peso totale d'impasto (pezzi × peso, più lo scarto) diviso la somma delle percentuali dà la farina; ogni ingrediente è la sua percentuale della farina.
type Ricetta = {
nome: string;
pesoPezzoGrammi: number;
scartoPercento: number; // impasto perso in lavorazione
ingredienti: { nome: string; percento: number }[]; // farina = 100
};
export function grammiPerProduzione(r: Ricetta, pezzi: number) {
const impastoTotale = pezzi * r.pesoPezzoGrammi * (1 + r.scartoPercento / 100);
const sommaPercentuali = r.ingredienti.reduce((s, i) => s + i.percento, 0);
const farina = (impastoTotale * 100) / sommaPercentuali;
return {
impastoTotaleKg: Math.round(impastoTotale) / 1000,
ingredienti: r.ingredienti.map((i) => ({
nome: i.nome,
grammi: Math.round((farina * i.percento) / 100),
})),
};
}
// Esempio: 100 baguette da 300 g, scarto 3%, farina 100 / acqua 70 / sale 2 / lievito 1
// impasto 30,9 kg -> farina circa 17.554 g, acqua 12.288 g, sale 351 g, lievito 176 gOrdini ricorrenti e piano di domani
Gli ordini possono valere per un giorno o per certi giorni della settimana; la query somma i pezzi da fare domani per ricetta.
create table ordini (
id uuid primary key default gen_random_uuid(),
laboratorio_id uuid not null,
cliente_id uuid not null,
ricetta_id uuid not null,
pezzi int not null check (pezzi > 0),
giorno date, -- ordine singolo
giorni_settimana int[], -- ordine ricorrente: 1 = lunedì ... 7 = domenica
attivo boolean not null default true,
check (giorno is not null or giorni_settimana is not null)
);
-- Pezzi da preparare domani, per ricetta
select ricetta_id, sum(pezzi) as pezzi
from ordini
where laboratorio_id = 'ID-LABORATORIO' and attivo
and (giorno = current_date + 1
or extract(isodow from current_date + 1)::int = any (giorni_settimana))
group by ricetta_id;
Pezzi comuni a tutti i progetti
Glossario
- Percentuale del panettiere
- Un modo di scrivere le ricette in cui la farina vale 100 e ogni ingrediente è una percentuale della farina.
- Allergeni
- Le 14 sostanze (come glutine, latte, frutta a guscio) che per legge vanno evidenziate in etichetta.