Skip to content

Project Overview

OZEAON is the web application behind the OZEAON ocean conservation platform. Organisations, projects and individuals publish and discuss conservation work in one place. It is a single Next.js App Router app running on Cloudflare Workers, with Supabase for data and auth, and Cloudflare R2 for files.

In progress: notifications (behind the NEXT_PUBLIC_FEATURE_NOTIFICATIONS flag), legal pages, and in-feed filters on the article and project feeds.

Planned work includes:

  • pods and DAO governance
  • a token reward system
  • project funding, donations and tipping
  • an educational resources hub with quizzes
  • events
  • messaging
  • notes and bookmarks
  • connections and blocking
  • search across every content type

The database schema already contains tables for several of these, such as pods, dao_proposals, token_transactions, educational_resources, events, bookmark_folders and open_calls. These tables have no application features behind them yet. A few API routes also exist with no UI calling them: /api/connections, /api/blocks and /api/events. Data Model & Database Schema lists the placeholder tables.

flowchart TD
    Browser["Web browser"]

    subgraph sg_App["Next.js App Router on Cloudflare Workers"]
        Pages["Server Components<br/>public and signed-in pages"]
        Actions["Server Actions"]
        Api["API routes"]
    end

    subgraph sg_Lib["Platform libraries"]
        Clients["lib/supabase<br/>server, browser, admin, public clients"]
        Storage["lib/storage<br/>StorageAdapter"]
    end

    Supabase[("Supabase Postgres<br/>RLS, triggers, auth")]
    R2[("Cloudflare R2")]

    Browser --> Pages
    Browser --> Api
    Pages --> Actions
    Pages --> Clients
    Actions --> Clients
    Api --> Clients
    Actions --> Storage
    Api --> Storage
    Clients --> Supabase
    Storage --> R2

The decisions that shape the codebase: