A tech-focused community for link aggregation and thoughtful discussion — inspired by Hacker News and Lobsters, but built for the modern web and the Arabic tech scene.
ProjectArabia is a community platform centered around sharing and discussing links, projects, and ideas. It’s designed for developers, founders, and builders who value depth, curiosity, and simplicity — not noise.
Users can:
- Submit tech-related articles, posts, or projects.
- Discuss and vote on links in real-time.
- Receive clean, non-spammy notifications when someone interacts with their post or comment.
- Explore trending discussions without algorithms getting in the way.
Think old-school web communities, but fast, edge-native, and thoughtfully minimal.
- Framework: TanStack Start — file-based routing + modern React SSR
- State Management: Zustand
- Email Service: Resend (used for notifications)
Runs entirely on the Cloudflare Edge:
- Cloudflare Pages & Workers – serving both frontend and API from the edge
- Cloudflare Queues – background email dispatch (no user-blocking or spam bursts)
- Cloudflare KV – fast cache for recent posts and sessions
- Cloudflare D1 (SQLite) – persistent relational storage
- Serverless-first design: No traditional backend servers — everything lives on Workers.
- Real-time consistency: KV for speed, D1 for truth.
- Edge queueing: Notifications are enqueued and processed asynchronously, respecting rate limits.
- Predictable simplicity: No complex abstractions, no hidden magic.
ProjectArabia aims to become the home for Arabic-speaking tech minds, where ideas spread fast but thoughtfully — without engagement farming or hype.
The mission is simple:
Create a calm space where builders share what matters.
# clone the repo
git clone https://github.com/v0id-user/projectarabia.git
cd projectarabia
# install dependencies (bun recommended)
bun install
# start dev server
bun run devBelow are the environment variables required to run ProjectArabia.
Copy these into your .env file and set the appropriate values.
CLOUDFLARE_ACCOUNT_ID=
CLOUDFLARE_D1_TOKEN=
RESEND_API_KEY=
SECRET_KEY=
SESSION_SECRET=- CLOUDFLARE_ACCOUNT_ID: Your Cloudflare account ID.
- CLOUDFLARE_D1_TOKEN: API token for D1 database access.
- RESEND_API_KEY: Your Resend (email service provider) API key.
- SECRET_KEY: Used for encryption and signing.
- SESSION_SECRET: Session cookie secret.
All variables are required for a successful build and deployment.
For production deployment, follow the Drizzle ORM Cloudflare D1 documentation to set up your D1 database and configure the necessary environment variables.
You'll need to:
- Create a D1 database in your Cloudflare dashboard
- Set up your
wrangler.jsoncwith the D1 database configuration - Configure the required environment variables (see Environment Variables section)
For local development, you need to configure the database path in drizzle.config.ts:
- Start your dev server once:
bun run dev - Navigate to
.wrangler/state/v3/d1/miniflare-D1DatabaseObject/directory - Find your database file (it will be a
.sqlitefile with a long hash name) - Copy the full path to that file
- Update
drizzle.config.tsand replace theurlin thedbCredentialsobject with your database path
Example:
dbCredentials: {
url: ".wrangler/state/v3/d1/miniflare-D1DatabaseObject/YOUR_DATABASE_FILE.sqlite",
}To deploy to production:
# Set all environment variables from .env file to production environment
bun wrangler secret bulk .env --env production
# Build the project for production
bun run build
# Deploy to Cloudflare production environment
bun run deployAGPL-3.0 License. Built by #V0ID — powered by curiosity, caffeine, and the edge.