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. The project is written primarily in TypeScript, distributed under the GNU Affero General Public License v3.0 license, first published in 2022. Key topics include: election, inngest, lemonsqueezy, mantine, mantine-ui.
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
Running locally
bashgit 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 dev
Copy .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.
Layout
apps/web TanStack Start frontend
packages/backend Convex deployment (schema, queries, mutations, auth)
tooling/{eslint,prettier,tsconfig} shared dev configs
License
This project is licensed under the GNU Affero General Public License v3.0 — see LICENSE for details.
Contributors
Showing top 3 contributors by commit count.
