Uploader is a powerful, full-stack monorepo application designed to automate and schedule posts to your social media accounts. Built with a modern tech stack including Next.js, Nest.js, and Prisma, it provides a seamless experience for managing your social media presence.
- ✅ Multi-Platform Support: Easily connect and manage multiple social media accounts (starting with Twitter).
- schedule Post Scheduling: Create and schedule posts for any time in the future.
- 🕒 Asynchronous Publishing: A robust background worker handles the posting process reliably.
- 🔐 Secure Authentication: User authentication is handled securely via Supabase.
- 🗂️ Post History: View a complete history of all published content.
- 🌓 Light & Dark Mode: A sleek, modern UI with theme support.
This project is a monorepo managed with pnpm and Turborepo.
| Area | Technology |
|---|---|
| Frontend | Next.js, React, TypeScript, Tailwind CSS |
| Backend API | Nest.js, TypeScript |
| Worker | Nest.js (for background jobs) |
| Database | Prisma (ORM), PostgreSQL |
| Auth | Supabase |
| Caching/Queue | Redis |
| Tooling | Turborepo, Docker, ESLint, Prettier |
The monorepo is organized into apps and packages.
/
├── apps/
│ ├── api/ # Nest.js backend API (with its own Prisma schema)
│ ├── web/ # Next.js frontend
│ └── post-worker/ # Nest.js worker (with its own Prisma schema)
│
└── packages/
├── eslint-config/ # Shared ESLint configuration
└── typescript-config/ # Shared TypeScript configuration
Follow these instructions to set up and run the project on your local machine.
Make sure you have the following installed:
- Node.js (v18 or later)
- pnpm
- Docker and Docker Compose
git clone https://github.com/your-repo/your-project.git
cd your-projectpnpm installThis project requires environment variables for the API, the worker, and the frontend. You will find .env.sample files in apps/api and apps/post-worker.
- Create a Supabase Project: Go to Supabase and create a new project to get your API URL and keys.
- Copy Sample Files:
cp apps/api/.env.sample apps/api/.env cp apps/post-worker/.env.sample apps/post-worker/.env
- Fill in the Variables: Open the new
.envfiles and add your credentials. The most important ones are:DATABASE_URL: Your PostgreSQL connection string (you can get this from Supabase or a local Postgres instance).SUPABASE_URL: Your Supabase project URL.SUPABASE_ANON_KEY: Your Supabase projectanonkey.REDIS_HOST,REDIS_PORT,REDIS_PASSWORD: Connection details for Redis.
Run the Prisma migrations to set up your database schema. This command needs to be run for both the api and post-worker apps.
pnpm --filter api prisma migrate dev
pnpm --filter post-worker prisma migrate devYou can run the entire stack (database, Redis, and all apps) using Docker Compose, or run the services manually.
-
Start Background Services (Redis):
docker-compose -f docker-compose.redis.yml up -d
(Ensure your
DATABASE_URLpoints to your Supabase instance or another running Postgres database). -
Start All Applications: This command uses Turborepo to run the
devscript in allapps/*simultaneously.pnpm dev
-
Access the Apps:
- Web Frontend: http://localhost:3000
- API Server: http://localhost:3001
The docker-compose.dev.yml is configured to build and run the entire stack in containers.
- Build and Start All Services:
docker-compose -f docker-compose.dev.yml up --build
Contributions, issues, and feature requests are welcome! Feel free to check the issues page.
This project is MIT licensed.