# Belgian Bitcoin Embassy Website ## 1. Overview The Belgian Bitcoin Embassy (BBE) website is a community-driven, Nostr-powered platform centered around a monthly Bitcoin meetup in Belgium. It is not a corporate site or institutional platform. It is a lightweight, curated Nostr client that: - showcases the next meetup - connects users to the community - displays curated Bitcoin content - allows users to interact via Nostr (likes, comments) The platform combines a simple public website with a role-based admin/moderation system. --- ## 2. Core Goals The website must: - clearly present the next monthly meetup - grow the Belgian Bitcoin community - aggregate and curate Nostr content - allow social interaction via Nostr - remain simple, fast, and easy to maintain --- ## 3. Tech Direction Frontend: - Next.js (App Router recommended) - Component-based architecture - Tailwind CSS (based on design system) Backend: - Lightweight API (Node.js / Go) - Nostr integration layer - Caching layer for events and posts Auth: - Nostr extension login (NIP-07 or signer) --- ## 4. Public Website Structure ### Routes - `/` → Onepage homepage - `/blog` → Blog overview - `/blog/[slug]` → Blog post page - `/admin` → Dashboard (role-based) --- ## 5. Homepage (Onepage) ### 5.1 Hero - Headline: Biggest Bitcoin community in Belgium - Subtext: Monthly meetup + community - CTA: - Join Meetup - Join Telegram - Follow on Nostr --- ### 5.2 Next Meetup Critical section. Fields: - title - date - time - city - venue - description - link Actions: - Attend / RSVP --- ### 5.3 About Short explanation: - what BBE is - community-driven - beginner friendly --- ### 5.4 Why Join - meet local Bitcoiners - learn Bitcoin - discover events - connect with community --- ### 5.5 Community Links Platforms: - Telegram - Nostr - X - YouTube - Discord - LinkedIn Each includes: - icon - short description - link --- ### 5.6 Blog Preview - featured posts - latest posts - categories --- ### 5.7 FAQ - beginner friendly? - do I need bitcoin? - cost? - location? --- ### 5.8 Final CTA - join meetup - follow community --- ## 6. Blog System (Nostr-Based) ### Source - Nostr longform events - imported manually by admins ### Flow 1. Admin inputs event id or naddr 2. Backend fetches from relays 3. Event is parsed and cached 4. Admin edits metadata 5. Post is published --- ### Blog Page `/blog` - list of posts - category filters - featured post --- ### Blog Post `/blog/[slug]` - title - content - categories - author - Nostr interactions: - likes - comments --- ## 7. Nostr Interaction Layer Users can: - login with Nostr - like posts (reactions) - comment (replies) - interact with events Backend: - fetch events from relays - cache data - apply local moderation Important: - no deletion on Nostr - moderation is local only --- ## 8. Roles & Auth ### Auth - Nostr login (extension) - signature verification - session/JWT ### Roles Defined by pubkeys. Admins: - set in `.env` Moderators: - assigned by admins --- ## 9. Admin Dashboard Route: `/admin` Admins have full control. ### Tabs #### 9.1 Overview - meetup summary - latest posts - quick actions #### 9.2 Events - create/edit meetups - mark upcoming/past - manage event content - moderate comments #### 9.3 Blog - import Nostr posts - edit metadata - assign categories - publish/unpublish - feature posts #### 9.4 Moderation - view comments - filter by post/event - hide content - block pubkeys (local) #### 9.5 Users - list users (pubkeys) - promote to moderator - remove moderator - block users #### 9.6 Categories - create/edit/delete - reorder #### 9.7 Relays - add/remove relays - set priority - test connectivity #### 9.8 Settings - site title - tagline - social links - feature toggles #### 9.9 Nostr Tools - manual fetch - cache refresh - debug events --- ## 10. Moderator Dashboard Moderators have content-only control. ### Tabs #### 10.1 Moderation - comment stream - hide spam - filter content #### 10.2 Events - view meetups - moderate comments - minor edits #### 10.3 Blog - edit metadata - assign categories - publish/unpublish #### 10.4 Reports (optional) - flagged content - moderation actions --- ## 11. Data Models ### Meetup - title - description - date - location - link - status ### Blog Post - nostr_event_id - title - slug - content - excerpt - categories - featured - visible ### Category - name - slug ### User - pubkey - role --- ## 12. Component Structure Public: - HeroSection - NextMeetupCard - AboutSection - CommunityLinks - BlogPreview - FAQSection Admin: - AdminSidebar - MeetupEditor - PostManager - CategoryManager - SettingsPanel --- ## 13. Design Principles - dark theme - Bitcoin orange accent - large whitespace - no borders (use spacing) - layered surfaces - minimal animation --- ## 14. MVP Scope Build first: - homepage - blog - blog post page - Nostr login - admin dashboard - moderator dashboard - meetup system - Nostr blog import --- ## 15. Key Principle This is not a CMS. This is a curated Nostr client for a Bitcoin meetup community. Keep it simple, fast, and focused on: - meetup - community - content