Deze website gebruikt cookies voor functionaliteit, statistieken en marketing. Je voorkeuren kun je later altijd aanpassen via instellingen.

Persoonlijk leerproject

Milano Builder

Onderzoek naar het bouwen van een modulair appplatform

Milano Builder is een persoonlijke technische proeftuin waarin ik leer hoe projectgeneratie, contentbeheer, databases, achtergrondverwerking en applicatiepreviews als één systeem kunnen samenwerken.

Werkende lokale MVPActief in ontwikkelingNiet commercieel in gebruik
Klik op de afbeelding om de volledige producttour te bekijken.

Over dit project

Milano Builder is een persoonlijk leer- en onderzoeksproject. Het platform is ontwikkeld om ervaring op te doen met de architectuur achter appgeneratie, CMS-beheer, databases, achtergrondtaken en geïsoleerde previews. Het wordt momenteel niet door klanten gebruikt en is geen commercieel aangeboden product.

Wat wilde ik hiermee leren?

  • Hoe je configureerbare applicaties automatisch genereert
  • Hoe een centrale API meerdere projecten beheert
  • Hoe achtergrondtaken betrouwbaar worden uitgevoerd
  • Hoe projectdata van elkaar geïsoleerd kan worden
  • Hoe een CMS en database-editor samenwerken met gegenereerde websites
  • Hoe previews veilig en beheersbaar gestart en gestopt kunnen worden

Hoe werkt het?

  1. 1

    Een nieuw project wordt aangemaakt via een wizard.

  2. 2

    Functies zoals routing, authenticatie, database en CMS worden geselecteerd.

  3. 3

    Een achtergrondworker genereert de benodigde bestanden en database.

  4. 4

    De voortgang wordt zichtbaar gemaakt in het dashboard.

  5. 5

    De gebruiker kan content, media en data beheren.

  6. 6

    Het gegenereerde project kan als geïsoleerde preview worden gestart.

  7. 7

    Een deploymentproces kan een build-artifact voorbereiden.

De huidige deploymentflow maakt build-artifacts klaar, maar biedt nog geen permanente publieke hosting voor gegenereerde applicaties.

Huidige functies

Projectbeheer

  • •Projectwizard
  • •Configureerbare technische functies
  • •Projectstatussen
  • •Project bijwerken en verwijderen

CMS

  • •Pagina’s en herbruikbare contentblokken
  • •Hero-, tekst-, kaarten-, CTA-, features-, FAQ-, statistieken-, banner- en contactblokken
  • •Header, footer en navigatielayout
  • •Mediabeheer
  • •Contactformulier

Database

  • •Afzonderlijke PostgreSQL-database per project
  • •Tabellen, kolommen en relaties beheren
  • •Data bekijken en bewerken
  • •CSV- en JSON-export
  • •Back-ups en herstel
  • •Beveiligde SQL-functionaliteit voor beheer

Platform

  • •Authenticatie en gebruikersrollen
  • •Achtergrondtaken met Redis en BullMQ
  • •Voortgang en taakstatussen
  • •Logging en health checks
  • •Geïsoleerde Docker-previews
  • •Build-artifacts voor deployments

Architectuur

De beheeromgeving communiceert met een centrale API. Langdurige taken worden via wachtrijen door workers uitgevoerd. Elk gegenereerd project kan een eigen database en previewomgeving krijgen.

Milano Builder in beeld

Producttour

Projectoverzicht
Nieuw project configureren
Voortgang van achtergrondtaken
CMS-pagina bewerken
Database beheren
Gegenereerde applicatie bekijken

Onder de motorkap

De drie lastigste engineeringvraagstukken

De complexiteit zat niet in één losse functie, maar in de grenzen tussen processen. Vooral betrouwbaarheid, isolatie en flexibel contentbeheer vroegen om bewuste ontwerpkeuzes.

01 / 03

Betrouwbare verwerking

Taken mogen falen, het systeem niet.

Projectgeneratie en builds bestaan uit meerdere stappen. Een onderbreking mag niet leiden tot dubbele acties of een project dat tussen twee statussen blijft hangen.

Ontwerpprincipe

Herhaalbare stappen, expliciete taakstatussen en gecontroleerde toegang per project.

Hervatten
Achtergrondtaken opnieuw kunnen uitvoeren zonder eerder afgerond werk onbedoeld te herhalen.
Gelijktijdigheid
Voorkomen dat meerdere workers op hetzelfde moment hetzelfde project aanpassen.
02 / 03

Isolatie als grens

Elk project krijgt zijn eigen veilige ruimte.

Een gegenereerde applicatie moet zelfstandig kunnen draaien, zonder toegang te krijgen tot gegevens of geheimen van het platform of van andere projecten.

Ontwerpprincipe

Minimale rechten en een harde projectgrens tussen runtime, configuratie en data.

Previewomgeving
Alleen de noodzakelijke configuratie doorgeven en platformgeheimen buiten de container houden.
Projectdata
Databases en toegangsgegevens per gegenereerd project duidelijk van elkaar scheiden.
03 / 03

Beheersbare flexibiliteit

Vrije content, voorspelbare applicaties.

Een CMS biedt vrijheid, terwijl de gegenereerde React-app geldige en consistente invoer nodig heeft. Die twee werelden moeten hetzelfde contentcontract volgen.

Ontwerpprincipe

Eén gevalideerd contentmodel van beheeromgeving tot uiteindelijke React-rendering.

Contentmodel
CMS-blokken vertalen naar herbruikbare componenten die in iedere gegenereerde app hetzelfde reageren.
Beheeracties
Media-uploads en databasebewerkingen valideren en begrenzen voordat ze worden uitgevoerd.

Wat ik heb geleerd

De verbinding tussen de lagen is waar betrouwbaarheid ontstaat.

Dit project heeft mijn blik verschoven van losse technieken naar complete workflows: van een actie in de interface tot de worker, database en runtime die het werk uiteindelijk uitvoeren.

  1. 01

    Architectuur over de hele keten

    Niet één scherm of API-route optimaliseren, maar begrijpen wat een keuze betekent voor frontend, backend, data en runtime.

    Full-stack systeemarchitectuurHerbruikbare templates en componenten
  2. 02

    Asynchroon denken

    Langdurige processen opdelen in zichtbare, herstelbare stappen met een duidelijke status en eigenaar.

    Wachtrijen en asynchrone verwerking
  3. 03

    Grenzen bewust ontwerpen

    Data, rechten en geheimen niet achteraf beveiligen, maar isolatie onderdeel maken van het ontwerp.

    Database-isolatieAuthenticatie en beveiliging
  4. 04

    Gedrag buiten de happy flow

    Juist bij fouten, herstarts en meerdere gelijktijdige processen wordt zichtbaar of een systeem werkelijk betrouwbaar is.

    Docker en runtimebeheerTesten van complexe workflows

Van prototype naar platform

Roadmap

De technische basis staat. De volgende stappen brengen het platform van een lokale proeftuin naar een stabielere, publiek bereikbare omgeving.

Milano Builder / development path

Van werkende kern naar publiek platform

ActiefGepland
  1. Werkend

    Fase 01

    Lokale basis

    De belangrijkste onderdelen werken samen als lokale MVP.

    • Projectgeneratie, CMS, databases en previews
    • Lokale build-artifacts via de deploymentflow
  2. 2

    In ontwikkeling

    Fase 02

    Verstevigen

    De lokale werking aantoonbaar robuuster maken.

    • Gedeelde objectopslag voor productiemedia
    • Uitgebreidere template- en end-to-end infrastructuurtests
  3. 3

    Gepland

    Fase 03

    Publiceren

    Gegenereerde applicaties een vaste plek buiten de ontwikkelomgeving geven.

    • Publieke hosting voor gegenereerde applicaties
    • Stabiele preview- en projectsubdomeinen
  4. 4

    Later

    Fase 04

    Productiseren

    Van technische proeftuin naar een vollediger beheerproces.

    • Draft- en publicatieworkflows
    • Verdere UX-verbeteringen

De grens van de huidige versie

De MVP draait voornamelijk lokaal. Gegenereerde applicaties hebben nog geen permanente publieke URL, productieopslag voor media is nog niet aangesloten en het platform is nog niet bedoeld als kant-en-klaar klantproduct.

De gereedschapskist

Technologie in lagen

01

Interface

ReactTypeScriptTailwind CSSVite
02

API & modellen

NestJSPrisma
03

Data & taken

PostgreSQLRedisBullMQ
04

Runtime & kwaliteit

DockerVitest
Elf technieken, één samenhangende ontwikkelomgeving

Een project met vergelijkbare technische uitdagingen?

Hoewel Milano Builder een persoonlijk leerproject is, laat het zien welke architectuur, integraties en beheeromgevingen ik kan ontwikkelen.

Bespreek je project