Acadex is a unified workspace designed to streamline your productivity with notes, resources, and scheduling tools. Built with modern web technologies, it offers a seamless experience for managing your academic and personal life.
- Authentication & Security: Secure user authentication powered by Supabase.
- Rich Text Notes: Create and edit formatted notes using Tiptap, a headless editor framework.
- Smart Scheduling: Integrated calendar functionality with FullCalendar for managing events and deadlines.
- OCR Capabilities: Extract text from images using Tesseract.js (via
node-tesseract-ocr). - Media Management: Efficient image uploads and hosting provided by Cloudinary.
- Responsive Design: Built with Tailwind CSS 4 for a beautiful, mobile-first interface.
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- UI Library: React 19
- Styling: Tailwind CSS 4 & Shadcn UI
- Backend/Database: Supabase
- Deployment: Vercel (Recommended)
Follow these steps to set up the project locally.
Ensure you have the following installed:
-
Clone the repository:
git clone <repository-url> cd acadex
-
Install dependencies:
npm install # or yarn install # or pnpm install
-
Environment Setup:
Create a
.env.localfile in the root directory and add the following environment variables. You will need credentials from Supabase and Cloudinary.# Supabase NEXT_PUBLIC_SUPABASE_URL=your_supabase_url NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key SUPABASE_URL=your_supabase_url SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key # Cloudinary CLOUDINARY_URL=your_cloudinary_url # Web Push (if applicable) NEXT_PUBLIC_VAPID_PUBLIC_KEY=your_vapid_public_key # Gemini LLM (Google AI Studio) – replace with your key/endpoint GEMINI_API_KEY=your_gemini_api_key_here # you can also specify a full endpoint; defaults to # https://generativelanguage.googleapis.com/v1beta2/models/gemini-1.0:generate GEMINI_API_ENDPOINT=https://api.example.com/v1/models/gemini:generate
Flashcard generation occurs on a separate page (/notes/[id]/generate).
When you click the Generate Flashcards button the client will navigate
there; the server component calls Gemini with your key, creates a deck, and
then immediately redirects to /decks/<deckId> once the cards are ready.
```
-
Run the development server:
npm run dev
Open http://localhost:3000 with your browser to see the result.
A quick look at the top-level files and directories you'll encounter in this project:
app/: Contains the application routes, layouts, and pages (Next.js App Router).components/: Reusable UI components.lib/: Library code, third-party client initializations.utils/: Utility functions and helpers.public/: Static assets like images and fonts.types/: TypeScript type definitions.
To learn more about the technologies used in this project: