- TypeScript 98.1%
- CSS 1.2%
- Dockerfile 0.5%
- JavaScript 0.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| .github/workflows | ||
| .vscode | ||
| app | ||
| components | ||
| dockerized | ||
| docs | ||
| drizzle | ||
| lib | ||
| public/images | ||
| .gitignore | ||
| .infisical.json | ||
| biome.json | ||
| bun.lock | ||
| codegen.ts | ||
| components.json | ||
| docker-compose.yml | ||
| Dockerfile | ||
| drizzle.config.ts | ||
| env.ts | ||
| eslint.config.mjs | ||
| example.env | ||
| LICENSE | ||
| next.config.ts | ||
| package.json | ||
| postcss.config.mjs | ||
| README.md | ||
| tsconfig.json | ||
Plutus
What is Plutus?
Plutus is a project with the primary objective to develop an intuitive platform where users and communities can showcase their projects and, through seamless integration with Open Collective, secure funding for their initiatives or contribute to projects they find compelling. Plutus streamlines the process of discovering, sharing, and financially supporting a diverse range of projects.
Fun Fact: The name "Plutus" is derived from the Greek god of wealth, symbolizing the platform's mission to facilitate financial support for projects and communities.
Built With
Getting Started
Plutus is a Next.js application using Bun as the runtime environment. It leverages Neon DB or PostgreSQL for database management, Drizzle ORM for database interactions, and integrates with Open Collective for funding functionalities. The frontend is built with React and styled using Tailwind CSS.
Prerequisites
Development Setup
-
Clone the repository
git clone https://github.com/GameTec-live/plutus.git cd plutus -
Set up your database
- Create a Neon DB project, or
- Set up a local PostgreSQL database
-
Configure environment variables
Copy the example environment file and fill in the required values:
cp example.env .env
Required environment variables:
| Variable | Description |
|---|---|
DATABASE_URL |
Your Neon DB or PostgreSQL connection string |
BETTER_AUTH_SECRET |
Secret key for authentication (generate a secure random string) |
BETTER_AUTH_URL |
Your application URL (e.g., http://localhost:3000 for development) |
GITHUB_CLIENT_ID |
GitHub OAuth application client ID |
GITHUB_CLIENT_SECRET |
GitHub OAuth application client secret |
MEILI_INDEX |
the index to store search data in |
MEILI_MANAGE_KEY |
Key with full permission for provisioning a new meilisearch instance |
MEILI_MASTER_KEY |
Key with permission to fully manage the MEILI_INDEX |
MEILI_SEARCH_KEY |
Public key that has search permission on the MEILI_INDEX |
MEILI_URL |
URL of your Meilisearch instance |
NEXT_PUBLIC_GITHUB_ENABLED |
Enable GitHub authentication (true or false) |
NEXT_PUBLIC_MEILI_INDEX |
The Meilisearch index name exposed to the client, should match MEILI_INDEX |
NEXT_PUBLIC_MEILI_SEARCH_KEY |
Public Meilisearch search key |
NEXT_PUBLIC_MEILI_URL |
Public URL of your Meilisearch instance |
NEXT_PUBLIC_OAUTH_ENABLED |
Enable OAuth authentication (true or false) |
OAUTH_CLIENT_ID |
OAuth provider client ID |
OAUTH_CLIENT_SECRET |
OAuth provider client secret |
OAUTH_DISCOVERY_URL |
OpenID Connect discovery endpoint URL of your OAuth provider |
OPEN_COLLECTIVE_COLLECTIVE_URL |
URL of your Open Collective page |
OPEN_COLLECTIVE_ENDPOINT |
Open Collective GraphQL API endpoint |
OPEN_COLLECTIVE_TOKEN |
Open Collective API token |
RESEND_FROM_EMAIL |
The email address the server should send emails from |
S3_BUCKETNAME |
Name of your S3 bucket |
S3_CLIENT |
S3-compatible storage provider name (cloudflare, backblaze, custom) |
S3_PUBLIC_URL |
Public URL used to serve uploaded files |
Optional environment variables:
| Variable | Description |
|---|---|
RESEND_API_KEY |
optional, API Key to interact with the resend api or selfsend api (email). Empty disables email |
RESEND_BASE_URL |
optional, provide a custom resend api base url to talk to instead. Leaving empty uses resends api. |
S3_KEY |
S3 secret access key for backblaze |
S3_KEY_ID |
S3 access key ID for backblaze |
S3_REGION |
Region where your S3 bucket is needed for backblaze, custom |
S3_HOST |
your custom host for S3 bucket |
S3_ACCESS_KEY_ID |
S3 access key ID for custom and cloudflare |
S3_ACOUNT_ID |
S3 account ID for cloudflare |
S3_SECRET_ACCESS_KEY |
S3 secret access key for cloudflare or custom |
-
Install dependencies
bun install -
Run database migrations (if applicable)
bun run drizzle-kit push -
Start the development server
bun run devThe application will be available at http://localhost:3000.
Production Deployment
Option 1: Vercel (Recommended)
- Push your code to a GitHub repository
- Import the project in Vercel
- Configure the environment variables in the Vercel dashboard
- Deploy with:
vercel --prod
Option 2: Docker
- Configure your
.envfile with production values - Build and run with Docker Compose:
docker compose up -d
Available Scripts
| Command | Description |
|---|---|
bun run dev |
Start the development server |
bun run build |
Build the application for production |
bun run start |
Start the production server |
bun run lint |
Run ESLint to check for code issues |
Documentation
COMING SOON