Skip to content

A public good for finding and streamlining news creation.

Notifications You must be signed in to change notification settings

PotLock/curatedotfun

 
 

Repository files navigation

curate.fun banner

curate.fun

curate news on socials & build community-owned autonomous brands

📚 Documentation💻 GitHub🐦 Twitter💬 Telegram

Table of Contents

Getting Started

Choose your path to get started with curate.fun ⚡

For Curators

If you want to submit and curate content:

  1. 🎯 Head to the User Guide
  2. 🔗 Learn how to submit content and moderate feeds
  3. 🌟 Apply to become a curator for specific feeds

For Developers

If you want to build and customize feeds:

  1. 📖 Start with the Configuration Guide
  2. 🚀 Learn about Deployment
  3. 🔌 Explore Plugin Development

System Architecture

Content Flow Architecture

graph TD
    %% Content Sources
    subgraph Sources["Content Sources"]
        Twitter["Twitter Source Plugin"]
        Telegram["Telegram Source Plugin"]
        LinkedIn["LinkedIn Source Plugin (Planned)"]
        style Twitter color:black
        style Telegram color:black
        style LinkedIn color:black
    end
    
    %% Submission Processing
    subgraph Submission["Submission Processing"]
        SubmissionService["Submission Service"]
        Moderation["Curator Moderation"]
        style SubmissionService color:black
        style Moderation color:black
    end
    
    %% Content Processing
    subgraph Processing["Content Processing"]
        ProcessorService["Processor Service"]
        GlobalTransform["Global Transformations"]
        style ProcessorService color:black
        style GlobalTransform color:black
    end
    
    %% Distribution
    subgraph Distribution["Distribution"]
        DistributionService["Distribution Service"]
        DistTransform["Distributor-specific Transforms"]
        style DistributionService color:black
        style DistTransform color:black
    end
    
    %% Distributor Plugins
    subgraph Distributors["Distributor Plugins"]
        TelegramDist["Telegram"]
        RSS["RSS"]
        Notion["Notion"]
        Supabase["Supabase"]
        style TelegramDist color:black
        style RSS color:black
        style Notion color:black
        style Supabase color:black
    end
    
    %% Flow connections
    Sources --> SubmissionService
    SubmissionService --> Moderation
    Moderation --> ProcessorService
    ProcessorService --> GlobalTransform
    GlobalTransform --> DistributionService
    DistributionService --> DistTransform
    DistTransform --> Distributors
    
    %% Styling
    classDef service fill:#f9f,stroke:#333,stroke-width:2px
    classDef plugin fill:#bbf,stroke:#333,stroke-width:1px
    classDef process fill:#bfb,stroke:#333,stroke-width:1px
    
    class SubmissionService,ProcessorService,DistributionService service
    class Twitter,Telegram,LinkedIn,TelegramDist,RSS,Notion,Supabase plugin
    class Moderation,GlobalTransform,DistTransform process
Loading

Key Components

  • Frontend

    • React-based web interface
    • Built with RSBuild and Tailwind CSS
    • Handles user interactions and submissions
    • See Frontend README for detailed documentation
  • Backend

    • Node.js runtime with Hono.js framework
    • Plugin-based architecture with module federation
    • Service-oriented design with clear boundaries
    • Twitter bot functionality
    • API endpoints for frontend
    • See Backend README for detailed documentation

Monorepo Overview

This project uses a monorepo structure managed with Turborepo for efficient build orchestration:

curatedotfun/
├── frontend/          # React frontend application (app.curate.fun)
├── backend/           # Node.js backend service (app.curate.fun)
├── docs/              # Documentation website (docs.curate.fun)
├── landing/           # Landing page website (curate.fun)
├── package.json       # Root package.json for shared dependencies
└── turbo.json         # Turborepo configuration

Development

Installing dependencies

The monorepo uses npm for package management. Install all dependencies with:

npm install

This will install dependencies for all packages in the monorepo.

Running the app

Start both frontend and backend development servers:

npm run dev

This will launch:

Building for production

Build all packages:

npm run build

Deploying

For deployment instructions, see our Deployment Guide.

Running tests

npm run test

Tests are located in the backend's src/__tests__ directory. Run them using npm run test.

Configuration & Usage

For detailed information about configuration, submission process, and usage, please refer to our documentation:

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you're interested in contributing to this project, please read the contribution guide.