DEV Community

Cover image for Go from Zero to a Full-Stack, Type-Safe, Cross-Platform App in Seconds
Fernando Bryan Reza Campos
Fernando Bryan Reza Campos

Posted on

Go from Zero to a Full-Stack, Type-Safe, Cross-Platform App in Seconds

I've been working on a project that I'm really excited to share with the dev community! My goal was to create a modern, powerful, and easy-to-use foundation for building full-stack applications that are type-safe from the database all the way to the frontend.

The result is the General Web App (GWA), a comprehensive application template, and its companion tool, gwa-create, an interactive CLI for scaffolding new projects in seconds.

If you've ever felt the pain of keeping your backend API and frontend types in sync, or wanted a single codebase that can be deployed to the web, desktop, and mobile, then this might be what you're looking for!

✨ What is General Web App (GWA)?

GWA is a full-stack, production-ready application template built on a modern, high-performance technology stack:

  • Backend: PostgreSQL database with a Python FastAPI server. The magic here is the use of prism-py, which automatically generates a complete REST API directly from your database schema.
  • Frontend: A blazing-fast Svelte 5 (with Runes!) and SvelteKit frontend, powered by the Deno runtime instead of Node.js.
  • End-to-End Type Safety: By combining prism-py on the backend and prism-ts on the frontend, you get a "zero-friction" data pipeline. Your database schema becomes the single source of truth, with types seamlessly propagated to your client application.
  • Cross-Platform Ready: The template comes with Tauri integrated out-of-the-box, allowing you to bundle your SvelteKit application as a native desktop app for Windows, macOS, and Linux using a Rust backend. There's even a proof-of-concept for Android support!

🚀 gwa-create: The Interactive Scaffolder

To make GWA incredibly easy to start with, I built gwa-create, a command-line tool written in Rust. Instead of manually cloning a repo and replacing placeholder values, this tool gives you an interactive wizard to configure your new project.

It guides you through:

  • Naming your project.
  • Choosing which components to include (Backend, Frontend, or both).
  • Setting up application identifiers for Tauri.
  • Configuring your database credentials.

In seconds, it generates a complete, ready-to-run project structure. For power users and automation scripts, you can also use a --yes flag to skip the prompts and use sensible defaults.

🛠️ Getting Started in 3 Steps

Ready to give it a try?

1. Install the Scaffolder

You'll need Rust and Cargo installed. Then, simply run:

cargo install gwa-create
Enter fullscreen mode Exit fullscreen mode

2. Create Your New Project

Run the create command and follow the interactive prompts:

gwa create my-awesome-app
Enter fullscreen mode Exit fullscreen mode

3. Run Your Application!

Once the project is generated, cd into the new directory and follow the instructions in the README.md. You can typically get the backend and frontend running with just a couple of Docker and Deno commands.

# Start the backend
cd my-awesome-app
docker compose up -d

# Start the frontend
cd generic-app
deno task dev --open
Enter fullscreen mode Exit fullscreen mode

And that's it! You now have a fully functional, type-safe, full-stack application ready for you to build upon.

Why I Built This

I believe that modern development should be fast, safe, and enjoyable. By combining best-in-class tools like Svelte 5, Deno, FastAPI, and Tauri, and focusing on solving the critical problem of type-safety across the stack, GWA aims to provide a superior developer experience.

This is a project I'm passionate about, and it's built for developers like you. I'd love for you to check it out, and any feedback, suggestions, or contributions are more than welcome!

Let me know what you think in the comments below!

Top comments (0)