create-gleam-lustre-fullstack
v0.2.0
Published
Scaffold a fullstack Gleam/Lustre app with client-server hydration
Maintainers
Readme
create-gleam-lustre-fullstack
A scaffolding tool for creating full-stack Gleam applications with Lustre, featuring client-server hydration.
Features
- 🚀 Full-stack Gleam/Lustre application setup
- 🔄 Client-server hydration out of the box
- ✨ Optimistic UI updates using the
optimistpackage - 📦 Separate client, server, and shared modules
- ⚡ Vite for fast client-side development
- 🧪 Test setup for all modules
Usage
Using npm create (recommended)
npm create gleam-lustre-fullstack@latestUsing npx
npx create-gleam-lustre-fullstack@latestUsing pnpm
pnpm create gleam-lustre-fullstack@latestUsing yarn
yarn create gleam-lustre-fullstackWhat's Included
The scaffolded project includes:
- Client: Lustre frontend application with Vite
- Hot module replacement
- TypeScript declarations
- CSS styling
- Optimistic UI updates for better UX
- Server: Gleam backend server
- Static file serving
- API endpoints ready
- Shared: Common code between client and server
- Shared types and logic
- Reusable utilities
Project Structure
your-project/
├── client/
│ ├── src/
│ │ ├── {name}_client.gleam
│ │ ├── main.js
│ │ └── main.css
│ ├── test/
│ ├── gleam.toml
│ ├── package.json
│ └── vite.config.js
├── server/
│ ├── src/
│ │ ├── {name}_server.gleam
│ │ └── manifest.gleam
│ ├── test/
│ ├── priv/
│ └── gleam.toml
└── shared/
├── src/
│ └── shared.gleam
├── test/
└── gleam.tomlGetting Started
After scaffolding your project:
cd your-project
# Start development servers
# Terminal 1 - Start the client dev server
cd client && npm install && npm run dev
# Terminal 2 - Start the server
cd server && gleam run
# Or build for production
cd client && npm install && npm run build
cd server && gleam runRequirements
- Gleam installed
- Node.js 16+ and npm
- Erlang/OTP 23+ (for Gleam)
Credits
- Inspired by create-gleam by Enderchief
- Based on a simplified version of the Lustre Full-Stack Applications Guide example
License
MIT
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Issues
If you find any bugs or have feature requests, please file an issue on the GitHub repository.
