Table of Contents
Choose your path to get started with curate.fun ⚡
If you want to submit and curate content:
- 🎯 Head to the User Guide
- 🔗 Learn how to submit content and moderate feeds
- 🌟 Apply to become a curator for specific feeds
If you want to build and customize feeds:
- 📖 Start with the Configuration Guide
- 🚀 Learn about Deployment
- 🔌 Explore Plugin Development
graph TD
%% Content Sources
subgraph Sources["Content Sources"]
Twitter["Twitter Source Plugin"]
style Twitter 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"]
Telegram["Telegram"]
RSS["RSS"]
Notion["Notion"]
Supabase["Supabase"]
style Telegram 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,RSS,Notion,Supabase plugin
class Moderation,GlobalTransform,DistTransform process
-
- React-based web interface
- Built with RSBuild and Tailwind CSS
- Handles user interactions and submissions
- See Frontend README for detailed documentation
-
- 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
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)
├── package.json # Root package.json for shared dependencies
└── turbo.json # Turborepo configuration
The monorepo uses npm for package management. Install all dependencies with:
npm install
This will install dependencies for all packages in the monorepo.
Make sure Docker Desktop (or Orbstack on MacOS) is running before starting the development servers.
Start both frontend and backend development servers:
pnpm run dev
This command:
- Starts a PostgreSQL container for development
- Initializes the database with migrations and seed data
- Starts the frontend and backend development servers
- Preserves your database data between runs
This will launch:
- Frontend at http://localhost:5173
- Backend at http://localhost:3000
For a fresh start with a clean database:
pnpm run dev:fresh
This command performs the same steps as pnpm run dev
but removes any existing database volumes for a clean slate.
When you're done, press Ctrl+C (or Cmd+C on Mac) to stop all services. The command will automatically clean up Docker containers while preserving your database data (unless you used the dev:fresh
command).
You can customize the development seed data by modifying backend/scripts/seed-dev.ts
.
Build all packages:
npm run build
Start the application in production mode:
pnpm run start
For detailed deployment instructions, see our Deployment Guide.
pnpm run test
This command:
- Starts a dedicated PostgreSQL container for testing
- Initializes the test database with migrations and test seed data
- Runs the test suite
- Automatically cleans up all test containers and volumes when complete
Tests are located in the backend's test
directory. Test seed data is located in backend/test/setup/seed-test.ts
.
For detailed information about configuration, submission process, and usage, please refer to our documentation:
- 📚 Documentation Website: Complete documentation
- 📖 Configuration Guide: Feed setup, plugins, and system configuration
- 👥 User Guide: How to submit and moderate content
- 🛠️ Developer Guide: Technical documentation for developers
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.