The official website and membership management platform for the FC Barcelona Supporters Group of San Diego.
Built with Next.js 15 (App Router), TypeScript, Tailwind CSS, and Supabase.
- Automated Sync: Fetches match schedules via API (or manual input).
- Smart Display: The homepage automatically updates to show the next upcoming match based on current time.
- Location Awareness: distinct display logic for Home (Barcelona) vs. Away matches.
A custom-built membership tracking system designed to handle seasonality without data duplication.
- Upsert Logic: Uses specific SQL functions to distinguish between New Members and Returning Veterans.
- Historical Tracking: Uses a PostgreSQL Text Array (
text[]) column (seasons_active) to track every season a member has been active (e.g.,['2024/2025', '2026/2027']). - Conflict Resolution: Prevents duplicate emails while allowing profile updates (phone, name) during renewal.
A protected portal for board members to manage the Penya.
- Role-Based Access: Secured via Supabase Auth.
- Member Management: View, search, and export the member roster.
- Match Control: Toggle specific matches as "Official Watch Parties" to highlight them on the frontend.
- Config Control: Open/Close membership registration globally.
- Interactive Maps: Google Maps integration for the Novo Brazil watch party location.
- Bento Grid Gallery: A responsive CSS grid layout showcasing the atmosphere, tech, and family-friendly vibe.
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- Database & Auth: Supabase (PostgreSQL)
- Icons: Lucide React
git clone [https://github.com/your-username/penya-sd.git](https://github.com/your-username/penya-sd.git)
cd penya-sd