Web of Devs is a community of developers with personal websites, homepages, and portfolios. Browse other developers' sites for inspiration, favorite the ones you love, and share your own. This project is built with SvelteKit, NestJS, PostgreSQL, and Redis.
Web of Devs surfaces developer websites in a browsable directory, with sort and filter options to narrow the list by programming language, GitHub follower count, or repository stars. Each entry renders an embedded live preview of the site alongside the author's name, profile image, and language tags.
Signed-in users can favorite the sites they like to keep a personal collection, submit their own site by linking a GitHub account, and report entries that don't meet the submission criteria. Profile metadata, programming languages, and star counts are pulled directly from GitHub and refreshed on a schedule, so the directory stays current without manual curation.
The frontend is a SvelteKit app written in TypeScript and styled with Tailwind CSS. End-to-end tests run with Playwright.
The backend is a NestJS service that exposes a REST API for entries, favorites, reports, and authentication. Knex manages PostgreSQL schema migrations and queries. Background jobs — most notably the GitHub scraper that refreshes user metadata through GitHub's REST API — run on a BullMQ queue backed by Redis, scheduled with @nestjs/schedule.
Authentication uses GitHub OAuth, with short-lived JWT access tokens and rotating refresh tokens. The NestJS API returns the tokens in the JSON response to the SvelteKit server (a trusted backend-for-frontend), which sets them as HttpOnly cookies on the browser response — the refresh token is never exposed to client-side JavaScript. Rate limiting (@nestjs/throttler), helmet, and standard CORS protections are applied at the API boundary.
This project requires Node.js and Docker to be installed on your system. Check the .node-version file for the recommended Node.js version.
Start PostgreSQL and Redis locally:
cd server
docker compose -f docker-compose.dev.yml up -dRun the server (port 3001 by default):
cd server
npm install
npm run start:devRun the client (port 3000):
cd client
npm install
npm run dev- Client routes are in
client/src/routesand shared UI inclient/src/components - Server modules are in
server/src, with the GitHub scraper inserver/src/scraper.service.ts - Database migrations are in
server/migrations