eBoto - Your One-Stop Online Voting Solution
Empower your elections with eBoto, the versatile and web-based voting platform that offers secure online elections for any type of organization.
- Monorepo: TurboRepo + pnpm
- Framework: TanStack Start (Vite + React, SSR)
- Backend: Convex — schema, queries, mutations, storage, auth
- Auth:
@convex-dev/auth(magic link + Google) - UI: shadcn/ui + Tailwind CSS v4 + Lucide
- Forms: react-hook-form + Zod
- Jobs: Inngest (served from
/api/inngest) - Payment: Lemon Squeezy (webhook at
/api/billing/webhook) - Deployment: Vercel (or any Node-compatible host) + Convex Cloud
git clone https://github.com/bricesuazo/eboto.git
cd eboto
pnpm install
# provisions a Convex deployment, generates types, writes
# CONVEX_DEPLOYMENT + VITE_CONVEX_URL into ./.env
pnpm devCopy .env.example to .env for the rest of the optional env vars.
Configure Convex Auth secrets (AUTH_GOOGLE_ID, AUTH_GOOGLE_SECRET, JWT_PRIVATE_KEY, JWKS) in the Convex dashboard.
apps/web TanStack Start frontend
packages/backend Convex deployment (schema, queries, mutations, auth)
tooling/{eslint,prettier,tsconfig} shared dev configs
This project is licensed under the GNU Affero General Public License v3.0 — see LICENSE for details.