Persevere, a non-profit that reduces recidivism through tech education, is hampered by a manual and inconsistent volunteer management process that makes it difficult to track volunteers and report data for funding. To solve this, we are building a platform to automate volunteer matching, streamline reporting, and provide a clear system for managing their growing community of mentors and guest speakers.
Please have the following installed on your machine:
- Node.js
- PNPM
- VSCode
Please have the following VSCode extensions installed:
- Prettier
- ESLint
- Code Spell Checker
- markdownlint
Create a .env file in the root directory with the following variables:
DATABASE_URL=your-database-connection-string
NEXTAUTH_SECRET=your-generated-secret-here
NEXTAUTH_URL=http://localhost:3000
RESEND_API_KEY=your-resend-api-key (optional, for sending emails)
RESEND_FROM_EMAIL=noreply@yourdomain.com (optional, defaults to onboarding@resend.dev for testing)
Setup steps:
- Generate your own NextAuth secret:
openssl rand -base64 32 - Contact leadership to get database connection string
- Each developer must use their own unique
NEXTAUTH_SECRET
Note: All developers share the same database for development, but each needs their own NEXTAUTH_SECRET to prevent session conflicts.
- Run
pnpm installto install the dependencies. - Run
pnpm run devto start the development server. - Open http://localhost:3000 in your browser.
The project uses Drizzle ORM with PostgreSQL. Database migrations are automatically applied on startup.
Test credentials for development:
| Role | Password | Type | |
|---|---|---|---|
| Admin | admin@test.com |
admin123 |
- |
| Staff | staff@test.com |
staff123 |
- |
| Volunteer | volunteer@test.com |
volunteer123 |
flexible |
Note: These are test accounts created for development purposes. Each role has different access permissions:
- Admin: Full system access, can manage all users and settings
- Staff: Can manage volunteers and opportunities, limited admin access
- Volunteer: Can view and sign up for opportunities, limited to their own data
Branch protections are enabled on this repository. To contribute, please create a new branch and make a pull request. The rules for branch names are lax, just be sure to include your name.
An example branch name for a card that adds a reset password email would be:
rudra-reset-password-email
Your pull request title must follow the conventional commits specification. An example of a valid pull request title is:
feat: Add pending form submissions table
The .vscode/launch.json file is configured to run Next.js in debug mode. This can let you step through your code line by line and inspect variables.
To start debug mode, navigate to the Run and Debug tab in VSCode, select the mode, and click the green play button.
