# anecoicastudio/athanor architecture

> Architecture diagram of the GitHub repository anecoicastudio/athanor, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/anecoicastudio/athanor
- Repository: https://github.com/anecoicastudio/athanor

## Overview

Athanor is a community platform where members build reputation through verifiable activity. The principal product surface is the Expo app: members onboard and use community features, with typed API and domain packages supporting the app. The web app adds public profiles and content, a waitlist, and admin moderation. The README documents Supabase as the shared backend and the apps-to-packages dependency rule; the sampled code confirms waitlist and admin API calls, but not most individual mobile feature call sites.

Main entry points: [`apps/native/src/app/_layout.tsx`](https://github.com/anecoicastudio/athanor/blob/main/apps/native/src/app/_layout.tsx) (Expo app), [`packages/api/src/index.ts`](https://github.com/anecoicastudio/athanor/blob/main/packages/api/src/index.ts) (Typed API), [`apps/web/app/api/waitlist/route.ts`](https://github.com/anecoicastudio/athanor/blob/main/apps/web/app/api/waitlist/route.ts) (Waitlist capture), [`apps/web/app/page.tsx`](https://github.com/anecoicastudio/athanor/blob/main/apps/web/app/page.tsx) (Web application)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_native["Mobile product"]
  node_mobile["Expo app<br/>[_layout.tsx]"]
  node_onboarding["Onboarding<br/>[index.tsx]"]
  node_community["Community feed<br/>[community.tsx]"]
  node_moments["Moments<br/>[momenti.tsx]"]
  node_events["Events<br/>[index.tsx]"]
  node_dreams["Dreams<br/>[&#91;id&#93;.tsx]"]
  node_aura["Aura reputation<br/>[aura.tsx]"]
  node_messaging["Messaging<br/>[chat.tsx]"]
  node_nativeauth["Auth and session<br/>[auth-context.tsx]"]
end

subgraph group_shared["Shared packages"]
  node_api["Typed API<br/>[index.ts]"]
  node_core["Domain logic<br/>[index.ts]"]
  node_schemas["Validation schemas<br/>[index.ts]"]
end

subgraph group_web["Web surfaces"]
  node_web["Web application<br/>[page.tsx]"]
  node_public["Public profiles and content<br/>[page.tsx]"]
  node_waitlist["Waitlist capture<br/>[route.ts]"]
  node_admin["Admin moderation<br/>[page.tsx]"]
  node_adminexport["Waitlist export<br/>[route.ts]"]
end

subgraph group_services["Backend services"]
  node_supabase[("Supabase")]
  node_stripe["Stripe"]
end

node_member(("Member"))

node_member -->|"uses"| node_mobile
node_mobile -->|"routes to"| node_onboarding
node_mobile -->|"routes to"| node_community
node_mobile -->|"routes to"| node_moments
node_mobile -->|"routes to"| node_events
node_mobile -->|"routes to"| node_dreams
node_mobile -->|"routes to"| node_aura
node_mobile -->|"routes to"| node_messaging
node_mobile -->|"uses"| node_nativeauth
node_mobile -->|"depends on"| node_api
node_api -->|"queries"| node_supabase
node_core -->|"imports"| node_schemas
node_member -->|"visits"| node_web
node_web -->|"serves"| node_public
node_web -->|"submits to"| node_waitlist
node_waitlist -->|"validates with"| node_schemas
node_waitlist -->|"calls"| node_api
node_waitlist -->|"creates client"| node_supabase
node_admin -->|"offers export"| node_adminexport
node_adminexport -->|"reads pages"| node_api
node_adminexport -->|"authenticates with"| node_supabase
node_api -.->|"integrates"| node_stripe

click node_mobile "https://github.com/anecoicastudio/athanor/blob/main/apps/native/src/app/_layout.tsx"
click node_onboarding "https://github.com/anecoicastudio/athanor/blob/main/apps/native/src/app/(onboarding)/index.tsx"
click node_community "https://github.com/anecoicastudio/athanor/blob/main/apps/native/src/app/(tabs)/community.tsx"
click node_moments "https://github.com/anecoicastudio/athanor/blob/main/apps/native/src/app/(tabs)/momenti.tsx"
click node_events "https://github.com/anecoicastudio/athanor/blob/main/apps/native/src/app/(modal)/event/%5Bid%5D/index.tsx"
click node_dreams "https://github.com/anecoicastudio/athanor/blob/main/apps/native/src/app/(modal)/dream/%5Bid%5D.tsx"
click node_aura "https://github.com/anecoicastudio/athanor/blob/main/apps/native/src/app/(modal)/aura.tsx"
click node_messaging "https://github.com/anecoicastudio/athanor/blob/main/apps/native/src/app/(modal)/chat.tsx"
click node_nativeauth "https://github.com/anecoicastudio/athanor/blob/main/apps/native/src/lib/auth-context.tsx"
click node_api "https://github.com/anecoicastudio/athanor/blob/main/packages/api/src/index.ts"
click node_core "https://github.com/anecoicastudio/athanor/blob/main/packages/core/src/index.ts"
click node_schemas "https://github.com/anecoicastudio/athanor/blob/main/packages/schemas/src/index.ts"
click node_web "https://github.com/anecoicastudio/athanor/blob/main/apps/web/app/page.tsx"
click node_public "https://github.com/anecoicastudio/athanor/blob/main/apps/web/app/%5Bhandle%5D/page.tsx"
click node_waitlist "https://github.com/anecoicastudio/athanor/blob/main/apps/web/app/api/waitlist/route.ts"
click node_admin "https://github.com/anecoicastudio/athanor/blob/main/apps/web/app/admin/(dashboard)/page.tsx"
click node_adminexport "https://github.com/anecoicastudio/athanor/blob/main/apps/web/app/admin/(dashboard)/waitlist/export/route.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_mobile,node_onboarding,node_community,node_moments,node_events,node_dreams,node_aura,node_messaging,node_nativeauth toneBlue
class node_api,node_core,node_schemas toneAmber
class node_web,node_public,node_waitlist,node_admin,node_adminexport toneMint
class node_supabase,node_stripe toneRose
class node_member toneIndigo
```

## Components

### Mobile product

- [Expo app](https://github.com/anecoicastudio/athanor/blob/main/apps/native/src/app/_layout.tsx): `apps/native/src/app/_layout.tsx`
- [Onboarding](https://github.com/anecoicastudio/athanor/blob/main/apps/native/src/app/(onboarding)/index.tsx): `apps/native/src/app/(onboarding)/index.tsx`
- [Community feed](https://github.com/anecoicastudio/athanor/blob/main/apps/native/src/app/(tabs)/community.tsx): `apps/native/src/app/(tabs)/community.tsx`
- [Moments](https://github.com/anecoicastudio/athanor/blob/main/apps/native/src/app/(tabs)/momenti.tsx): `apps/native/src/app/(tabs)/momenti.tsx`
- [Events](https://github.com/anecoicastudio/athanor/blob/main/apps/native/src/app/(modal)/event/%5Bid%5D/index.tsx): `apps/native/src/app/(modal)/event/[id]/index.tsx`
- [Dreams](https://github.com/anecoicastudio/athanor/blob/main/apps/native/src/app/(modal)/dream/%5Bid%5D.tsx): `apps/native/src/app/(modal)/dream/[id].tsx`
- [Aura reputation](https://github.com/anecoicastudio/athanor/blob/main/apps/native/src/app/(modal)/aura.tsx): `apps/native/src/app/(modal)/aura.tsx`
- [Messaging](https://github.com/anecoicastudio/athanor/blob/main/apps/native/src/app/(modal)/chat.tsx): `apps/native/src/app/(modal)/chat.tsx`
- [Auth and session](https://github.com/anecoicastudio/athanor/blob/main/apps/native/src/lib/auth-context.tsx): `apps/native/src/lib/auth-context.tsx`

### Shared packages

- [Typed API](https://github.com/anecoicastudio/athanor/blob/main/packages/api/src/index.ts): `packages/api/src/index.ts`
- [Domain logic](https://github.com/anecoicastudio/athanor/blob/main/packages/core/src/index.ts): `packages/core/src/index.ts`
- [Validation schemas](https://github.com/anecoicastudio/athanor/blob/main/packages/schemas/src/index.ts): `packages/schemas/src/index.ts`

### Web surfaces

- [Web application](https://github.com/anecoicastudio/athanor/blob/main/apps/web/app/page.tsx): `apps/web/app/page.tsx`
- [Public profiles and content](https://github.com/anecoicastudio/athanor/blob/main/apps/web/app/%5Bhandle%5D/page.tsx): `apps/web/app/[handle]/page.tsx`
- [Waitlist capture](https://github.com/anecoicastudio/athanor/blob/main/apps/web/app/api/waitlist/route.ts): `apps/web/app/api/waitlist/route.ts`
- [Admin moderation](https://github.com/anecoicastudio/athanor/blob/main/apps/web/app/admin/(dashboard)/page.tsx): `apps/web/app/admin/(dashboard)/page.tsx`
- [Waitlist export](https://github.com/anecoicastudio/athanor/blob/main/apps/web/app/admin/(dashboard)/waitlist/export/route.ts): `apps/web/app/admin/(dashboard)/waitlist/export/route.ts`

### Backend services

- **Supabase**
- **Stripe**

### Other components

- **Member**

## Connections

- Member → Expo app: uses
- Expo app → Onboarding: routes to
- Expo app → Community feed: routes to
- Expo app → Moments: routes to
- Expo app → Events: routes to
- Expo app → Dreams: routes to
- Expo app → Aura reputation: routes to
- Expo app → Messaging: routes to
- Expo app → Auth and session: uses
- Expo app → Typed API: depends on
- Typed API → Supabase: queries
- Domain logic → Validation schemas: imports
- Member → Web application: visits
- Web application → Public profiles and content: serves
- Web application → Waitlist capture: submits to
- Waitlist capture → Validation schemas: validates with
- Waitlist capture → Typed API: calls
- Waitlist capture → Supabase: creates client
- Admin moderation → Waitlist export: offers export
- Waitlist export → Typed API: reads pages
- Waitlist export → Supabase: authenticates with
- Typed API → Stripe: integrates
