A place to share your poems.
Altar is a social platform for writers — publish poems, follow other authors, bookmark favourites, and engage through likes and comments.
- Write & publish — compose poems, save drafts, and edit published work
- Discover — home feed, search, and author pages
- Engage — likes, comments, bookmarks, and follower notifications
- Profiles — personal page (
/me) with your posts, drafts, and bookmarks - Auth — Google OAuth sign-in
- Theming — light and dark modes
- Moderation — profanity filtering and an issue-reporting flow
- Framework — Next.js 16 (App Router, Turbopack)
- Backend — Convex for database, queries, mutations, and crons
- Auth —
@react-oauth/google - UI — React 19, Tailwind CSS 4, Framer Motion, Lucide icons
- State & forms — Zustand, Formik, Zod
- Tooling — Bun, Biome, ESLint, TypeScript
Install dependencies and run the dev server:
bun install
bun devIn a second terminal, start Convex:
bunx convex devOpen http://localhost:3000.
Create a .env.local with:
NEXT_PUBLIC_CONVEX_URL=...
NEXT_PUBLIC_GOOGLE_CLIENT_ID=...
app/
(auth)/ sign-in, login, signup
(main)/
(protected)/ write, drafts, bookmarks, me, notifications, ...
(with-header)/ home, poem/[id], author/[id]
components/ UI, blocks, landing
convex/ schema and server functions (poems, comments, likes, ...)
hooks/ store/ provider/ wrappers/ utils/ types/
bun dev— start the Next.js dev server (Turbopack)bun run build— production buildbun start— run the production buildbun run lint— ESLint