Personal Movie Database
PMDb is your personal space for movies! Here you can rate and review movies you watched and make watchlists for movies you want to watch.
To get a local environment for this project, you need to have the following installed:
- Go
- Node.js (for TailwindCSS) either directly or with NVM
- TailwindCSS
- Templ
- Goose
- SQLC
- Air (optional but highly recommended)
You also need to set up a Turso database.
After cloning the repo, setting up a database, and installing all dependencies:
- Copy the contents of
.env.example
into.env
then supplyDBURL
andDBTOKEN
according to your database instance
cp ~/.env.example .env
- Execute the database migrations via Goose in the
./sql/schema
directory
goose turso "libsql://[DATABASE].turso.io?authToken=[TOKEN]" up
- Compile the Tailwind CSS by running the
tw-build
NPM script. If you want to run the Tailwind watcher, you'll have to run thetw-watch
script in a separate terminal.
npm run tw-build
- Run
air
(at the project root) which will compile and auto-reload the Go server and Templ components.
air
- Go: backend
- Templ: templating
- TailwindCSS: styling Go templates
- HTMX: UI interactivity
- Turso: database
- Goose: SQL migration tool
- SQLC: SQL-to-Go code generation tool
- Air: live reloading
The backend is built as a set of loosely coupled services as displayed in this chart.
This project is still a work in progress and mainly for learning purposes, so for now I only accept issues for pointing out bugs or feature suggestions. Thanks!