Open Collective based project fund management https://plutus.gtlv.org
  • TypeScript 98.1%
  • CSS 1.2%
  • Dockerfile 0.5%
  • JavaScript 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Frisi 1ce9fdf33f
Merge pull request #57 from GameTec-live/frisi-documentationReadme
Add additional required environment variables to README
2026-06-23 11:23:50 +02:00
.github/workflows feat: biome 2026-02-12 23:05:19 +01:00
.vscode feat: biome 2026-02-12 23:05:19 +01:00
app feat: create project screen 2026-06-23 10:01:02 +02:00
components fix: show error when picking 2026-06-23 10:56:09 +02:00
dockerized fix: exit and missing env 2026-05-19 14:09:13 +02:00
docs doc: cache tags 2026-06-22 18:37:28 +02:00
drizzle fix: await migration, catch error and add indexes 2026-05-19 14:02:19 +02:00
lib fix: accidental double encoding 2026-06-23 10:47:13 +02:00
public/images fix: swap image 2026-06-16 12:41:24 +02:00
.gitignore Initial commit from Create Next App 2026-01-03 21:30:33 +01:00
.infisical.json fix: reinit infisical 2026-03-14 12:09:57 +01:00
biome.json fix: formatting 2026-06-20 11:49:53 +02:00
bun.lock feat: create project screen 2026-06-23 10:01:02 +02:00
codegen.ts feat: create project screen 2026-06-23 10:01:02 +02:00
components.json fix: make S3_PUBLIC_URL mandatory and format components.json for consistency 2026-06-18 20:02:22 +02:00
docker-compose.yml fix: exit and missing env 2026-05-19 14:09:13 +02:00
Dockerfile feat: db schema and docker file 2026-05-19 12:36:35 +02:00
drizzle.config.ts feat: use t3 env to guarantee a typesafe env 2026-04-28 12:04:05 +02:00
env.ts Merge remote-tracking branch 'origin/main' into WulfExploreSection 2026-06-20 11:45:13 +02:00
eslint.config.mjs feat: biome 2026-02-12 23:05:19 +01:00
example.env doc: update example 2026-06-02 13:42:00 +02:00
LICENSE feat: license 2026-01-05 16:09:57 +01:00
next.config.ts feat: implement banner upload functionality and integrate with user settings 2026-06-19 23:34:17 +02:00
package.json feat: create project screen 2026-06-23 10:01:02 +02:00
postcss.config.mjs feat: biome 2026-02-12 23:05:19 +01:00
README.md Clarify S3_REGION description in README 2026-06-23 11:21:05 +02:00
tsconfig.json feat: biome 2026-02-12 23:05:19 +01:00

Plutus

Plutus logo

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

  • Next

  • React

  • Bun

  • PostgreSQL

  • OpenCollective

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

  • Bun (v1.0 or later)
  • Neon DB account or a PostgreSQL database
  • Git

Development Setup

  1. Clone the repository

    git clone https://github.com/GameTec-live/plutus.git
    cd plutus
    
  2. Set up your database

    • Create a Neon DB project, or
    • Set up a local PostgreSQL database
  3. 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
  1. Install dependencies

    bun install
    
  2. Run database migrations (if applicable)

    bun run drizzle-kit push
    
  3. Start the development server

    bun run dev
    

    The application will be available at http://localhost:3000.

Production Deployment

  1. Push your code to a GitHub repository
  2. Import the project in Vercel
  3. Configure the environment variables in the Vercel dashboard
  4. Deploy with:
    vercel --prod
    

Option 2: Docker

  1. Configure your .env file with production values
  2. 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