The idea came from losing a hackathon... to setup time Last time we did a hackathon, we had the idea ready in the first 30 minutes. Then we spent six hours setting up Postgres, wiring auth, fixing CORS, fighting CI pipelines, and deploying. By the time we were done, half the idea was dead and the other half was rushed. So this time we asked the obvious question that nobody seems to build for: What if the boring 6 hours was just one click? That's SnapStack. Pick your stack, click once, and get a full deployable project — frontend, backend, database, auth, CI — already wired up and running. Not a boilerplate you still have to glue together. Actually running. What it does You open SnapStack, choose a stack (say, React + Node + Postgres), describe your project in one line, and hit deploy. Under the hood it:
- scaffolds the repo from a battle-tested template
- provisions the database and secrets
- chains the services in the right order (auth needs the DB URL, hosting needs the build)
- hands you a live URL and a dashboard showing every service spinning up in real time The provisioning part is genuinely a job-scheduling problem, not a checklist. If the dependency setup goes out of order things break in fun ways, so we model the wait time between steps roughly like: $$T_{total} = \max_i \left( t_i + \sum_{j \in deps(i)} t_j \right)$$ which is a fancy way of saying: the slowest dependency chain decides how long your deploy takes — so we kick off everything independent in parallel. How we built it The core is a dependency-graph executor. Each service (DB, auth, hosting) is a node with deps and a run function: def execute(graph): for node in graph.topo_order(): node.wait_for_deps() # block until upstream is ready node.run() # provision this service Small idea, but it fixed most of our race conditions overnight. Our first version supported everything — every framework, every DB, every host. That lasted about two days before we realized every new combination broke a different thing. We cut it down to three well-tested stacks and suddenly the product went from "fragile demo" to "thing we actually use ourselves." What we learned
- Constraints are the feature. Supporting 3 stacks reliably beats supporting 30 unreliably. Our users don't want options, they want it to work.
- Make deploys idempotent. When something fails halfway, a retry must resume instead of duplicating resources. We learned this the loud way.
- The demo-day gremlin is real. A CDN cached our old build hours before the deadline, and we spent 90 minutes debugging why our fix "wasn't applying". Cache invalidation isn't named one of the hard problems for nothing.
Built With
- docker
- github-actions
- node.js
- postgresql
- python
- react
- tailwind-css
Log in or sign up for Devpost to join the conversation.