Bygga
Type the product name from the box. Bygga shows every assembly step in 3D, with the parts, screws and tools for each one, and reads it out loud.
Letterboxd for Birds — log, rate, and share your sightings
LifestyleTypeScript · JavaScriptGitHub @sunnypawatOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Letterboxd for birds: log sightings, follow birders, and share across the Fediverse via ActivityPub. Offline-first PWA with permacomputing values.
Taken from the repository README
Loading the full README.
Read the full README ↗Letterboxd for birds — a decentralized social platform for citizen bird science
Aviary is a social platform where birders can log sightings, share them with a community, and connect with people across the Fediverse via ActivityPub. Built with permacomputing values: offline-first, low-bandwidth friendly, and fully data-portable.
| Layer | Tech |
|---|---|
| Framework | Next.js 16 (App Router, Server Actions) |
| Database | PostgreSQL via Neon |
| ORM | Drizzle ORM |
| Auth | NextAuth v5 |
| Photos | UploadThing |
| Federation | ActivityPub (HTTP Signatures, JSON-LD) |
| Maps | Leaflet + React Leaflet |
| Styling | Tailwind CSS v4 |
| Deployment | Vercel |
git clone https://github.com/YOUR_USERNAME/aviary.git
cd aviary
npm install
cp .env.example .env.local
Fill in .env.local:
DATABASE_URL=postgresql://...
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your-random-secret # openssl rand -base64 32
UPLOADTHING_TOKEN=your-token
node node_modules/drizzle-kit/bin.cjs push
npm run dev
Open http://localhost:3000.
The easiest path is Vercel + Neon:
drizzle-kit push once against your Neon database to create the tablesEach Aviary instance exposes standard ActivityPub endpoints:
/.well-known/webfinger — actor discovery/users/:username — actor profile (JSON-LD)/users/:username/inbox — incoming activities/users/:username/outbox — published sightings as Note activitiesSightings posted as public are federated as Create{Note} activities signed with RSA-SHA256 HTTP Signatures. Mastodon users can follow Aviary accounts and see sightings in their home feed.
Aviary is designed to last and to include everyone:
docker-compose up)MIT