Fiufeed is a social app for short whistle audio posts, groups, reposts, and community competitions.
The stack is:
- Next.js 16
- React 19
- TypeScript
- Tailwind CSS 4
- Supabase (Auth, Postgres, Storage, RLS)
The project is active and still evolving. The codebase is open for contributions, but the product and schema may continue to change quickly.
- Audio-first posts
- Public feed and profile pages
- Public and private groups
- Competitions with scoped visibility and voting
- Bird badges and titles tied to competition wins
- Supabase-backed auth, storage, and row-level security
npm installCopy .env.local.example to .env.local and fill in:
NEXT_PUBLIC_SUPABASE_URL=...
NEXT_PUBLIC_SUPABASE_ANON_KEY=...
NEXT_PUBLIC_APP_URL=http://localhost:3000npm run devOpen http://localhost:3000.
Fiufeed depends on Supabase for:
- authentication
- database schema and RLS
- storage buckets and policies
You must apply the SQL migrations in supabase/migrations/ to a Supabase project before the app will behave correctly.
Important migrations for the current feature set include:
0004_group_media_buckets.sql0005_group_media_policies.sql0006_competition_entry_visibility.sql0007_group_member_management.sql0008_site_admin_public_competitions.sql0009_reposts_and_feed_actions.sql0010_fix_feed_own_posts.sql0011_fix_interaction_rls_and_private_audio.sql0012_secure_audio_and_competition_integrity.sql0013_competition_scope_badges_and_feed.sql0014_public_routes.sql
If you apply migrations manually in the Supabase SQL editor, keep them in order.
In Supabase Authentication:
Site URLshould matchNEXT_PUBLIC_APP_URLRedirect URLsshould include:
http://localhost:3000/auth/callback
https://your-production-domain/auth/callback
If you use Google OAuth, configure the provider in Supabase and also add the Supabase callback URL in Google Cloud.
npm run build
npm run lintNotes:
next buildmay fail in some restricted local environments withspawn EPERM; validate in CI or Vercel if that happens.- if lint tooling is broken in your environment, treat that as a separate setup issue and do not assume the app code is invalid.
The app is designed to deploy on Vercel.
Minimum production checklist:
- Import the repository in Vercel.
- Add the environment variables from
.env.local.example. - Set
NEXT_PUBLIC_APP_URLto the production origin. - Configure Supabase Auth
Site URLandRedirect URLs. - Apply all required Supabase migrations.
- Run a smoke test:
- sign in
- publish a post
- play audio
- comment
- repost
- create/join a group
- create/view a competition
This repository is licensed under Apache License 2.0. See LICENSE.
By contributing, you agree that your contributions will be licensed under Apache-2.0 as part of this project.
Please read CONTRIBUTING.md before opening a pull request.
Please read SECURITY.md for how to report vulnerabilities.


