164164 </ label >
165165< ul class ="md-nav__list " data-md-component ="toc " data-md-scrollfix ="">
166166< li class ="md-nav__item ">
167- < a class ="md-nav__link " href ="#get-superstack ">
167+ < a class ="md-nav__link " href ="#1- get-superstack ">
168168< span class ="md-ellipsis ">
169- Get SuperStack
169+ 1. Get SuperStack
170170 </ span >
171171</ a >
172- < nav aria-label ="Get SuperStack " class ="md-nav ">
172+ < nav aria-label ="1. Get SuperStack " class ="md-nav ">
173173< ul class ="md-nav__list ">
174174< li class ="md-nav__item ">
175175< a class ="md-nav__link " href ="#option-1-use-the-template-recommended ">
210210</ a >
211211</ li >
212212< li class ="md-nav__item ">
213- < a class ="md-nav__link " href ="#nuke-everything ">
213+ < a class ="md-nav__link " href ="#project-structure ">
214214< span class ="md-ellipsis ">
215- Nuke everything
215+ Project Structure
216+ </ span >
217+ </ a >
218+ </ li >
219+ < li class ="md-nav__item ">
220+ < a class ="md-nav__link " href ="#resetting ">
221+ < span class ="md-ellipsis ">
222+ π Resetting
216223 </ span >
217224</ a >
218225</ li >
315322 </ label >
316323< ul class ="md-nav__list " data-md-component ="toc " data-md-scrollfix ="">
317324< li class ="md-nav__item ">
318- < a class ="md-nav__link " href ="#get-superstack ">
325+ < a class ="md-nav__link " href ="#1- get-superstack ">
319326< span class ="md-ellipsis ">
320- Get SuperStack
327+ 1. Get SuperStack
321328 </ span >
322329</ a >
323- < nav aria-label ="Get SuperStack " class ="md-nav ">
330+ < nav aria-label ="1. Get SuperStack " class ="md-nav ">
324331< ul class ="md-nav__list ">
325332< li class ="md-nav__item ">
326333< a class ="md-nav__link " href ="#option-1-use-the-template-recommended ">
361368</ a >
362369</ li >
363370< li class ="md-nav__item ">
364- < a class ="md-nav__link " href ="#nuke-everything ">
371+ < a class ="md-nav__link " href ="#project-structure ">
372+ < span class ="md-ellipsis ">
373+ Project Structure
374+ </ span >
375+ </ a >
376+ </ li >
377+ < li class ="md-nav__item ">
378+ < a class ="md-nav__link " href ="#resetting ">
365379< span class ="md-ellipsis ">
366- Nuke everything
380+ π Resetting
367381 </ span >
368382</ a >
369383</ li >
384398< h1 id ="getting-started "> π Getting Started</ h1 >
385399< p > SuperStack uses Docker, so make sure < a href ="https://docs.docker.com/get-docker/ "> Docker is
386400installed</ a > before you begin.</ p >
387- < h2 id ="get-superstack "> Get SuperStack</ h2 >
401+ < h2 id ="1- get-superstack "> 1. Get SuperStack</ h2 >
388402< h3 id ="option-1-use-the-template-recommended "> Option 1: Use the Template (Recommended)</ h3 >
389403< p > The easiest way to get started:</ p >
390404< p > Click < a href ="https://github.com/explodinglabs/superstack/generate "> Use this template</ a >
391405and create a new repository (e.g. < code > myapp</ code > ) on GitHub.</ p >
392- < p > Clone your new repository :</ p >
406+ < p > Clone it to your machine :</ p >
393407< div class ="highlight "> < pre > < span > </ span > < code > git< span class ="w "> </ span > clone< span class ="w "> </ span > https://github.com/yourname/myapp.git
394408< span class ="nb "> cd</ span > < span class ="w "> </ span > myapp
395409</ code > </ pre > </ div >
396410< h3 id ="option-2-clone-and-track-upstream-advanced "> Option 2: Clone and Track Upstream (Advanced)</ h3 >
397- < p > If you want to keep SuperStackβs Git history and pull upstream SuperStack
398- changes later, clone SuperStack:</ p >
411+ < p > If you want to keep SuperStackβs Git history and pull upstream changes later,
412+ clone SuperStack:</ p >
399413< div class ="highlight "> < pre > < span > </ span > < code > git< span class ="w "> </ span > clone< span class ="w "> </ span > https://github.com/explodinglabs/superstack.git< span class ="w "> </ span > myapp
400414< span class ="nb "> cd</ span > < span class ="w "> </ span > myapp
401415</ code > </ pre > </ div >
402- < p > Create your own repo at < a href ="https://github.com/new "> https://github.com/new </ a > , then:</ p >
416+ < p > < a href ="https://github.com/new "> Create your own repo </ a > , then:</ p >
403417< div class ="highlight "> < pre > < span > </ span > < code > git< span class ="w "> </ span > remote< span class ="w "> </ span > rename< span class ="w "> </ span > origin< span class ="w "> </ span > upstream
404418git< span class ="w "> </ span > remote< span class ="w "> </ span > add< span class ="w "> </ span > origin< span class ="w "> </ span > https://github.com/yourname/myapp.git
405419git< span class ="w "> </ span > push< span class ="w "> </ span > -u< span class ="w "> </ span > origin< span class ="w "> </ span > main
@@ -412,25 +426,25 @@ <h2 id="2-configure-environment-variables">2. Configure Environment Variables</h
412426< div class ="highlight "> < pre > < span > </ span > < code > cp< span class ="w "> </ span > example.env< span class ="w "> </ span > .env
413427</ code > </ pre > </ div >
414428< blockquote >
415- < p > β οΈ The .env file is for local development only. For remote deployments,
416- set environment variables using CI/CD or inline in the < code > docker compose up </ code > command (be sure to avoid saving secrets in shell history) .</ p >
429+ < p > β οΈ < strong > The .env file is for local development only.</ strong > Don't store real secrets
430+ in production β use CI/CD environment variables or a secrets manager .</ p >
417431</ blockquote >
418432< h2 id ="3-start-the-stack "> 3. Start the Stack</ h2 >
419433< div class ="highlight "> < pre > < span > </ span > < code > docker< span class ="w "> </ span > compose< span class ="w "> </ span > up< span class ="w "> </ span > -d
420434</ code > </ pre > </ div >
421435< p > That's it β your backend is live.</ p >
422436< p > You can now open
423- < a href ="http://localhost:8000/openapi/ "> https ://localhost:8000/openapi/</ a > to explore
437+ < a href ="http://localhost:8000/openapi/ "> http ://localhost:8000/openapi/</ a > to explore
424438your API.</ p >
425439< hr />
426440< h2 id ="what-just-happened "> π§© What Just Happened?</ h2 >
427441< p > SuperStack automatically:</ p >
428- < ul >
429- < li > Starts a fresh < strong > Postgres</ strong > database</ li >
430- < li > Applies initial < strong > migrations</ strong > </ li >
431- < li > Launches < strong > PostgREST</ strong > and < strong > Swagger UI</ strong > </ li >
432- < li > Serves everything through < strong > Caddy</ strong > </ li >
433- </ ul >
442+ < ol >
443+ < li > Starts a fresh Postgres database</ li >
444+ < li > Applies initial migrations</ li >
445+ < li > Launches PostgREST and Swagger UI</ li >
446+ < li > Serves everything through Caddy</ li >
447+ </ ol >
434448< pre class ="mermaid "> < code > flowchart TD
435449 Caddy["Caddy (API Gateway)"]
436450 Caddy --> Services["Services (PostgREST, Swagger UI + more)"]
@@ -439,10 +453,25 @@ <h2 id="what-just-happened">π§© What Just Happened?</h2>
439453< blockquote >
440454< p > π‘ Only Caddy exposes a port β all services are routed through it.</ p >
441455</ blockquote >
442- < h2 id ="nuke-everything "> Nuke everything</ h2 >
443- < p > To wipe your stack and start clean:</ p >
456+ < h2 id ="project-structure "> Project Structure</ h2 >
457+ < div class ="highlight "> < pre > < span > </ span > < code > π bin/ β Helper scripts (e.g. wrappers for CLI tools)
458+ π caddy/ β Custom Caddy configuration and certificates
459+ π docs/ β Markdown files for SuperStack documentation
460+ π postgres/ β SQL migrations and configuration of the postgres container
461+ π compose.yaml β Main Docker Compose config
462+ π compose.override.yaml β Optional local overrides (development only)
463+ π example.env β Example environment variables β copy to `.env`
464+ π LICENSE β License file (MIT)
465+ π logo.png β SuperStack logo for README/docs
466+ π mkdocs.yml β MkDocs configuration for documentation site
467+ π README.md β Overview and quick start for the repository
468+ </ code > </ pre > </ div >
469+ < h2 id ="resetting "> π Resetting</ h2 >
470+ < p > If you want to start fresh:</ p >
444471< div class ="highlight "> < pre > < span > </ span > < code > docker< span class ="w "> </ span > compose< span class ="w "> </ span > down< span class ="w "> </ span > --volumes
472+ docker< span class ="w "> </ span > compose< span class ="w "> </ span > up< span class ="w "> </ span > -d
445473</ code > </ pre > </ div >
474+ < p > This will wipe your database and re-run all migrations from scratch.</ p >
446475< h2 id ="whats-next "> β What's Next?</ h2 >
447476< p > π < a href ="../migrations/ "> Create your database schema with migrations</ a > < br />
448477π < a href ="../deploying/ "> Deploy to a remote environment</ a > </ p >
0 commit comments