← Tutte le idee Gestionali per aziende

HorsePlan

Un gestionale pensato solo per le scuole di equitazione

Cosa fa

Software per maneggi e scuole di equitazione: lezioni, cavalli, allievi e pagamenti in un unico posto, in più lingue.

Come guadagna

Il progetto è stato messo in vendita su SideProjectors a circa 5.800 $. Come guadagna non è indicato pubblicamente.

Rendilo tuo

  • La stessa formula per un'altra nicchia piccola ma con soldi: scuole di vela, scuole di ballo, piscine, campi da padel.
  • Parla con 5 titolari prima di costruire: le nicchie si vincono capendo il loro lavoro meglio dei software generici.

Le frasi da scrivere all'AI

1. Base del sito e grafica

Crea un'app web in italiano chiamata "Maneggio Facile": un gestionale per maneggi e scuole di equitazione: lezioni, cavalli, allievi, pacchetti di lezioni e pagamenti, con il controllo del carico di lavoro di ogni cavallo. Usa React, Vite, TypeScript e Tailwind CSS.

Pagine da creare:
1. Pagina iniziale con le funzioni e il prezzo
2. Registrazione del maneggio e invito degli istruttori
3. Calendario delle lezioni con cavalli e allievi
4. Cavalli: scheda con ore di lavoro, riposo, veterinario, maniscalco
5. Allievi: livello, pacchetti, presenze, liberatorie

Stile: elegante e naturale: sfondo crema #FBF7F0, verde scuro #14532D, cuoio #92400E, carattere "Cormorant" per i titoli e "Inter" per i testi, calendario chiaro e leggibile su tablet. 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:
- "cavalli": nome, età, livello adatto, massimo ore di lavoro al giorno, note sanitarie, scadenze
- "allievi": nome, livello, contatti, liberatoria firmata, tutore se minorenne
- "lezioni": data, ora, durata, istruttore, tipo (singola, gruppo)
- "partecipanti": allievo e cavallo assegnato per ogni lezione
- "pacchetti": lezioni comprate e usate per allievo

Regole di sicurezza obbligatorie:
- ogni maneggio vede solo i suoi dati
- un cavallo non può superare il massimo di ore di lavoro al giorno: lo controlla il database
- un allievo senza liberatoria firmata non può essere messo in lezione

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. Lezioni e benessere dei cavalli

Calendario settimanale delle lezioni con istruttore, allievi e cavalli. Assegnando un cavallo a un allievo, il sito propone solo cavalli adatti al livello e non già impegnati in quell'ora.

Il database impedisce di superare il massimo di ore di lavoro giornaliere di ogni cavallo (codice nei Dettagli tecnici): se si prova, compare "Stella ha già lavorato 3 ore oggi". Lo stesso vale per l'allievo senza liberatoria firmata.

Scadenze dei cavalli (vaccini, maniscalco, veterinario) con promemoria via email.

4. Allievi, pacchetti e pagamenti

Scheda allievo con livello, presenze, pacchetto attivo (es. 10 lezioni) con le lezioni rimaste che si scalano a ogni presenza, e pagamenti. Per i minorenni, dati del tutore e liberatoria firmata da lui.

Area genitori/allievi con le prossime lezioni e la possibilità di disdire entro 24 ore. Incassi del mese ed esportazione CSV.

5. Pagamenti con Stripe

Aggiungi un abbonamento a 29 € al mese per maneggio. Gratis l'utente ha: 10 cavalli e 30 allievi. Con il piano Pro sblocca: cavalli e allievi illimitati, più istruttori, area allievi e promemoria.

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. Cavalli: assegna lo stesso cavallo a lezioni consecutive fino a superare il massimo giornaliero: l'ultima assegnazione deve essere rifiutata.
Correggi quello che non va e scrivimi cosa hai cambiato.

Dettagli tecnici

Carico di lavoro dei cavalli e liberatorie

Un trigger controlla, prima di ogni assegnazione, le ore di lavoro del cavallo in quel giorno e la liberatoria dell'allievo.

create table cavalli (
  id uuid primary key default gen_random_uuid(),
  maneggio_id uuid not null,
  nome text not null,
  max_minuti_giorno int not null default 180
);

create table allievi (
  id uuid primary key default gen_random_uuid(),
  maneggio_id uuid not null,
  nome text not null,
  minorenne boolean not null default false,
  tutore text,
  liberatoria_il date,
  check (not minorenne or tutore is not null)
);

create table lezioni (
  id uuid primary key default gen_random_uuid(),
  maneggio_id uuid not null,
  inizio timestamptz not null,
  durata_minuti int not null
);

create table partecipanti (
  lezione_id uuid not null references lezioni(id) on delete cascade,
  allievo_id uuid not null references allievi(id),
  cavallo_id uuid not null references cavalli(id),
  primary key (lezione_id, allievo_id),
  unique (lezione_id, cavallo_id)            -- un cavallo per allievo nella stessa lezione
);

create function controlla_assegnazione() returns trigger language plpgsql as $
declare giorno date; minuti int; massimo int; durata int;
begin
  if (select liberatoria_il from allievi where id = new.allievo_id) is null then
    raise exception 'Allievo senza liberatoria firmata';
  end if;

  select inizio::date, durata_minuti into giorno, durata from lezioni where id = new.lezione_id;
  select max_minuti_giorno into massimo from cavalli where id = new.cavallo_id;
  select coalesce(sum(l.durata_minuti), 0) into minuti
  from partecipanti p join lezioni l on l.id = p.lezione_id
  where p.cavallo_id = new.cavallo_id and l.inizio::date = giorno;

  if minuti + durata > massimo then
    raise exception 'Il cavallo ha già lavorato % minuti oggi (massimo %)', minuti, massimo;
  end if;
  return new;
end $;

create trigger assegnazione_controllata before insert on partecipanti
  for each row execute function controlla_assegnazione();

Pezzi comuni a tutti i progetti

Glossario

CSV
Un file di testo con i dati separati da virgole, che si apre con Excel.
Liberatoria
Il documento con cui l'allievo (o il genitore) accetta i rischi dell'attività: va firmato prima di montare.