Bucket is a modern course and grade management application built with Next.js. It allows students to organize their courses, track their grades, and visualize their academic progress. It includes features for importing course data (specifically designed for D2L/Brightspace formats) and provides a clean, responsive user interface.
- Course Management: Organize and view all your courses in one place.
- Grade Tracking: Detailed breakdown of grades for each course.
- Data Import: Easily import course outlines and grades from D2L/Brightspace.
- Authentication: Secure login using Google OAuth (via NextAuth.js).
- Responsive Design: Built with Tailwind CSS and DaisyUI for a great experience on mobile and desktop.
- Telemetry: Built-in telemetry for usage tracking (configurable).
- Frontend: Next.js 16 (App Router), React 19
- Styling: Tailwind CSS, DaisyUI
- Backend/API: Hasura GraphQL Engine
- Database: PostgreSQL
- Authentication: NextAuth.js
- Infrastructure: Docker & Docker Compose
Before you begin, ensure you have the following installed:
git clone <repository-url>
cd bucketnpm install
# or
yarn install
# or
pnpm installCopy the example environment file to create your local configuration:
cp .env.local.example .env.localOpen .env.local and fill in the required values:
GOOGLE_CLIENT_ID&GOOGLE_CLIENT_SECRET: Create credentials in the Google Cloud Console.NEXTAUTH_URL:http://localhost:3000for local development.NEXTAUTH_SECRET: Generate a random string (e.g.,openssl rand -base64 32).GRAPHQL_URL: The URL of your Hasura instance (e.g.,http://localhost:8080/v1/graphql).GRAPHQL_SERVICE_SECRET: A shared secret for signing JWTs to authenticate with Hasura.TELEMETRY_SECRET,TELEMETRY_ADMIN_ID,CRON_SECRET: Set these for telemetry and cron job security.
Start the PostgreSQL database and Hasura engine using Docker Compose:
cd services
docker-compose up -dThis will start Hasura on http://localhost:8080. You may need to configure Hasura (apply migrations/metadata) if this is a fresh install.
npm run devOpen http://localhost:3000 with your browser to see the application.
app/: Next.js App Router pages and API routes.api/: Backend API endpoints (Auth, GraphQL proxy, Parsing logic).components/: Reusable React components.courses/: Course management pages.
lib/: Utility functions (Hasura client, Auth options, Grade parsing).services/: Docker Compose configuration for backend services.examples/: Sample data files for testing imports.
This project is licensed under the terms found in the LICENSE file.