hackathon-starter icon indicating copy to clipboard operation
hackathon-starter copied to clipboard

Hackathon Starter Template (NextJS, Hono, ShadcnUI, Prisma, Postgres, Docker)

Hackathon Starter

This is my hackathon starter template, based on this awesome turborepo template.

It includes everything you need to get started in a single monorepo, including:

  • Next.js for the frontend
  • Hono as lightweight backend
  • shadcn/ui for the UI component library
  • Prisma as ORM
  • PostgreSQL as database
  • Docker for containerization, with docker-compose watch for hot reloading
  • TypeScript for static type checking
  • Livecycle for instant sharing of your local development environment
  • And some more of the usual goodies such as prettier, eslint, etc.

This is meant for hackathons, not for production apps! It's a great way to get started quickly, but you should probably not use it for anything serious.

Using this template

Clone the repository:

git clone https://github.com/Code42Cate/hackathon-starter.git

Rename packages/database/.env.example to packages/database/.env

Start everything with docker-compose:

docker-compose watch

Push database schema:

pnpm turbo db:generate                             

Add ui components

Use the pre-made script:

pnpm install # if you haven't already
pnpm ui:add <component-name>

This works just like the add command in the shadcn/ui CLI.

Docker

Both the api (api.Dockerfile) and the web app (web.Dockerfile) are dockerized and managed by docker-compose (docker-compose.yml). You can start everything with:

docker-compose watch

This will start the api, the web app, and the database. It also enables hot reloading for both the api and the web app.

Database

The database is a Postgres database managed by Prisma. It is reachable through this connection: postgres://postgres:postgres@localhost:5432/hackathon.

What's inside?

This Turborepo includes the following packages/apps:

Apps and Packages

  • web: a Next.js app
  • api: a Hono app
  • database: a stub Prisma library shared by both web and api apps
  • ui: a stub React component library powered by shadcn/ui
  • eslint-config-custom: eslint configurations (includes eslint-config-next and eslint-config-prettier)
  • tsconfig: tsconfig.jsons used throughout the monorepo

Credits

Thanks to dan5py who created the original template :)

License

MIT