Skip to content

bhedanikhilkumar-code/Planora

Planora

Full-stack calendar and admin platform with recurrence rules, ICS import/export, authentication, audit logs, and PostgreSQL-backed scheduling workflows.

TypeScript React Prisma PostgreSQL Portfolio

Repository: bhedanikhilkumar-code/Planora

Repository Health


Recruiter Snapshot

Planora is a portfolio-grade scheduling product. It shows how a calendar app becomes a real system when it handles recurrence, import/export, authentication, admin oversight, audit trails, and database-backed event workflows.

Signal Details
Product domain Scheduling, event operations, recurrence, calendar interoperability, admin workflows
Frontend React, TypeScript, Vite, Tailwind CSS, FullCalendar, protected routes
Backend Express, Prisma, PostgreSQL, JWT auth, Zod validation, Jest/Supertest
Best review angle Time/domain complexity: recurrence rules, ICS flows, admin tooling, role boundaries, and persistence
Status Local demo screenshot available; tests and build scripts are included for both apps

Demo Preview

Calendar workspace
Planora calendar workspace preview

Screenshot captured from the local frontend so reviewers can understand the product experience before installing the project.

What the App Covers

Area What is implemented or represented
Calendar workspace Month/week/day/list calendar views, event forms, filters, reminders, attachments, and drawer-based review
Recurrence logic Recurrence service, occurrence expansion, recurring event APIs, and date-range workflows
ICS interoperability Import .ics files, validate calendar data, and export event ranges for external calendar tools
Auth + security Login/register, protected routes, JWT middleware, rate limiting, Helmet, validation, and error handling
Admin operations Admin dashboard, user detail pages, event management, settings, and audit log review
Quality foundation Backend Jest/Supertest tests, frontend Vitest setup, Prisma schema, seed script, Docker Compose support

Architecture at a Glance

flowchart LR
    User[Planner / Admin] --> Frontend[React + FullCalendar Frontend]
    Frontend --> Api[Express API]
    Api --> Auth[JWT Auth + Zod Validation]
    Api --> Services[Event, Recurrence, ICS, Audit Services]
    Services --> Prisma[Prisma Client]
    Prisma --> Postgres[(PostgreSQL)]
    Api --> Storage[Attachment Storage Adapter]
Loading

Core Workflow

sequenceDiagram
    participant U as User
    participant UI as Calendar UI
    participant API as Express API
    participant R as Recurrence Service
    participant DB as PostgreSQL
    U->>UI: Create or import event
    UI->>API: Submit event payload
    API->>R: Validate recurrence / ICS rules
    R->>DB: Persist event and occurrences
    DB-->>API: Return calendar-ready data
    API-->>UI: Render updated schedule and admin state
Loading

Local Setup

1. Install dependencies

git clone https://github.com/bhedanikhilkumar-code/Planora.git
cd Planora
npm install

2. Configure environment variables

copy apps\backend\.env.example apps\backend\.env
copy apps\frontend\.env.example apps\frontend\.env.local

Backend variables from apps/backend/.env.example:

Variable Purpose
PORT Backend API port, default 4000
DATABASE_URL PostgreSQL connection string used by Prisma
JWT_ACCESS_SECRET Access-token signing secret for local auth
JWT_REFRESH_SECRET Refresh-token signing secret for local auth
FRONTEND_URL Allowed frontend origin, usually http://localhost:5173

Frontend variables from apps/frontend/.env.example:

Variable Purpose
VITE_API_BASE_URL Frontend API endpoint, usually http://localhost:4000

3. Start PostgreSQL

docker compose up db -d

4. Prepare Prisma

npm run prisma:generate -w @planora/backend
npm run prisma:migrate -w @planora/backend
npm run prisma:seed -w @planora/backend

5. Run the app

npm run dev

Default local URLs:

Service URL
Frontend http://localhost:5173
Backend http://localhost:4000
PostgreSQL localhost:5432

Quality Checks

# Build both workspaces
npm run build

# Run backend and frontend tests
npm run test

Current quality status:

Check Status
Backend tests Jest/Supertest configured in apps/backend/tests
Frontend tests Vitest configured in apps/frontend
Database model Prisma schema and migrations-ready workflow included
Repository health workflow Runs on push through GitHub Actions

Project Structure

Planora/
├── apps/
│   ├── backend/              # Express, Prisma, PostgreSQL, auth, tests
│   │   ├── prisma/           # Schema and seed data
│   │   ├── src/              # API routes, middleware, services, config
│   │   └── tests/            # Supertest coverage for API behavior
│   └── frontend/             # React, Vite, FullCalendar UI
│       └── src/              # Admin, API client, components, context, pages
├── docs/                     # Architecture, case study, quality, roadmap, review docs
├── docker-compose.yml        # PostgreSQL + app service setup
└── package.json              # Workspace scripts

Roadmap

  • Harden timezone and recurrence edge-case coverage
  • Expand ICS import/export validation and error states
  • Add richer admin analytics for event activity and audit logs
  • Add hosted demo deployment with safe demo credentials
  • Improve attachment storage for production-ready object storage
  • Add CI build/test checks for both workspaces

Documentation Hub

Document Purpose
Architecture System layers, workflow, data/state model, and extension points.
Case Study Product framing, decisions, tradeoffs, and portfolio story.
Roadmap Practical next steps for turning the project into a stronger product.
Quality Standard Repository health checks, review standards, and quality gates.
Review Checklist Final share/recruiter review checklist for a stronger GitHub impression.
Contributing Branching, commit, review, and quality guidelines.
Security Responsible disclosure and safe configuration notes.
Support How to ask for help or report issues clearly.
Code of Conduct Collaboration expectations for respectful project activity.

Security Note

Use the .env.example files as templates only. Keep real database URLs, JWT secrets, and deployment credentials in local .env files or hosting-provider secret storage.

License

This project is released under the MIT License.

About

Full-stack calendar and admin platform with recurrence, ICS import/export, authentication, and PostgreSQL event workflows.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors