Top news from the people you trust
Sill collects links posted by the people you follow on Bluesky and Mastodon, and aggregates them into a list of the most popular links in your network.
You can find the official production version of Sill at sill.social
Sill is a monorepo built with pnpm workspaces and Turborepo. It uses React Router for the web app, Hono for the API, and Postgres for the database.
apps/web/- React Router v7 web application (port 3000)apps/api/- Hono API server (port 3001)apps/worker/- Background job processor for social media data
@sill/schema- Shared database schema and types (Drizzle ORM)@sill/auth- Authentication utilities and OAuth@sill/links- Link processing and social media integration@sill/emails- Email templates (React Email) and Mailgun service
- Node.js >= 22
- pnpm >= 10.17.1
- Docker
You'll also need a Mailgun account for transactional emails.
Run the database in Docker and everything else locally with hot-reload:
- Create your environment file and generate secrets:
cp .env.example .env
pnpm generate-secrets- Start the database:
docker-compose up -d- Install dependencies and start all packages:
pnpm install
pnpm dev:local- Visit
http://localhost:3000(web) andhttp://localhost:3001(API).
Run everything in containers (matches production environment):
pnpm dev:docker| Command | Description |
|---|---|
pnpm dev:local |
Start all packages in development mode |
pnpm dev:docker |
Start everything in Docker containers |
pnpm build |
Build all packages for production |
pnpm lint |
Run Biome linter/formatter |
pnpm typecheck |
Run TypeScript checks |
pnpm test |
Run Vitest tests |
Sill uses Drizzle ORM with Postgres:
- Schema:
packages/schema/src/schema.ts - Migrations:
packages/schema/src/migrations/ - Config:
drizzle.config.ts