Skip to content

About

Full-stack assessment, scoring and post-test analytics platform for C&A IIT Guwahati.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

17 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Official repository and portfolio fork

The official, club-owned source is caciitg/c-and-assess. Hermes-25/c-and-assess is Abhishek Das’s personal portfolio and contribution fork—not the deployment source. Original authorship and commit history are preserved.

See Ownership and handover for how to contribute, deploy and pass the project to future club teams.

The short version

C&Assess is a full-stack online assessment and post-test analysis platform built for real club operations. Organizers can create an assessment, publish a question paper from CSV plus an image ZIP, manage registrations, run the test, review the cohort and release results—without editing backend code.

Candidates get a focused timed interface, recovery-friendly autosave, transparent integrity rules and a useful report covering score, rank, percentile, time use, topic gaps, solutions and next steps.

It was built under a demanding constraint: deliver the core experience of costly assessment products while keeping mandatory infrastructure cost near zero for controlled club pilots.

Why this project matters

Most student assessment workflows break into forms, spreadsheets, manual scoring and scattered result messages. C&Assess connects the whole lifecycle:

Before the test During the test After the test
Create and schedule assessments Timed, distraction-light runner Automatic objective scoring
CSV question publishing Question palette and review flags Rank and percentile
Exact image-file validation Batched autosave and recovery Topic and difficulty analysis
Registration controls Clear tab-switch policy Question-wise solutions
Organizer preview Final-submit confirmation Private error tracking and next steps

The important product decision is that scoring and core analytics are deterministic and auditable. An exam does not become unavailable because an LLM provider is slow, expensive or returning inconsistent output.

Product tour

Candidate desk Focused assessment
C&Assess candidate landing page with assessment and sample analysis C&Assess timed exam interface with question palette and autosave state

Post-test analysis: the score is only the start.

C&Assess post-test dashboard showing score, percentile, rank, accuracy, time and recommended practice

All screenshots use the public demo experience. No candidate database record is shown.

System architecture

flowchart TB
    U[Candidate or organizer]:::person --> CF[Cloudflare DNS and edge]:::edge
    CF -->|caciitg.com| GH[Existing C&A website<br/>Cloudflare Pages from caciitg/devops]:::site
    CF -->|assess.caciitg.com| APP[C&Assess edge application]:::app

    APP --> VX[Vinext adapter]:::framework
    VX --> NX[Next.js 16 + React 19<br/>App Router and server routes]:::framework
    NX --> AUTH[Google OAuth]:::external
    NX --> D1[(Cloudflare D1<br/>users, papers, attempts, results)]:::data
    NX --> OBJ[(Object storage<br/>question images)]:::data

    ORG[Organizer lifecycle]:::person --> APP
    APP --> PIPE[Create → publish → register → test<br/>score → review → release]:::process

    classDef person fill:#efe9ff,stroke:#6f35e8,color:#15111f,stroke-width:2px;
    classDef edge fill:#fff0dc,stroke:#f48120,color:#2a1607,stroke-width:2px;
    classDef site fill:#f3f4f6,stroke:#4b5563,color:#111827;
    classDef app fill:#17111f,stroke:#9b74ff,color:#ffffff,stroke-width:3px;
    classDef framework fill:#e7f0ff,stroke:#3178c6,color:#0b1f33;
    classDef external fill:#e8f5e9,stroke:#34a853,color:#102814;
    classDef data fill:#fff7cc,stroke:#d79b00,color:#302300;
    classDef process fill:#f7e9f3,stroke:#b53f8c,color:#321027;
Loading

The current public release uses an OpenAI Sites-managed Cloudflare runtime, D1 binding and object-storage binding. The locked target is a club-owned Worker deployed from this repository by GitHub Actions, backed by club D1 and optional private R2. R2 billing is deferred: the club staging configuration supports text-only papers until storage is approved. The live cutover remains gated by secrets, data migration, backup, monitoring and final-infrastructure rehearsal. See Free-tier operation, Architecture, Deployment and the cutover runbook.

What has been engineered

  • End-to-end product: candidate, organizer, assessment, submission and results journeys in one application.
  • Database lifecycle: versioned SQL migrations and a schema covering users, assessment rules, question versions, registrations, attempts, audit events, result jobs and analytics.
  • Spreadsheet-first operations: safe replacement of a published paper only after every CSV row and referenced image validates.
  • Reliable exam state: answers update immediately in the browser and checkpoint in batches instead of writing on every click.
  • Explainable scoring: MCQ, multi-select and typed-answer evaluation with negative marking, tolerance and accepted variants.
  • Cohort analytics: batched result jobs, ranks, percentiles, question metrics and topic/difficulty summaries.
  • Security boundaries: server-side organizer allowlist, signed sessions, same-origin checks for mutations, security headers and rate-limit backstops.
  • Operations: deployment gates, rollback guidance, exam-day freeze, load-test scripts and a controlled production rehearsal.

Tech stack

Layer Choice Why it fits
UI Next.js 16, React 19, TypeScript, CSS One typed codebase for candidate and organizer experiences
Edge adapter Vinext + Vite Runs the App Router model on Cloudflare infrastructure
Compute Cloudflare Workers-compatible runtime Low-latency server routes close to candidates
Data Cloudflare D1 + Drizzle ORM SQL, migrations and simple operational ownership
Media Object storage / R2-compatible FILES binding Keeps image binaries out of database rows
Identity Google OAuth 2.0 Familiar sign-in without another password database
Import Papa Parse + JSZip Spreadsheet-friendly paper publishing with image bundles
Quality ESLint, TypeScript, schema/scoring tests, GitHub Actions Repeatable checks on every change

Evidence, not theatre

The release was checked through a fresh live organizer-to-result rehearsal on the final domain:

create → CSV/image validation → publish → register → attempt → submit → batch analytics → release → analysis

The controlled rehearsal verified objective scoring, persistence, rank/percentile, five analysis views, written solutions, audit history and image delivery across organizer preview, exam and released review.

The repository also includes an offline/locally emulated 4,000-candidate × 60-question capacity rehearsal. Its 24,010-request run completed with zero request failures and a 5.32 s local-emulator p95. This validates logic and a realistic request pattern; it is explicitly not presented as final-domain production proof. A real public event still needs staged tests on the final club-owned infrastructure.

Run it locally

Prerequisites

  • Node.js 22.13 or newer
  • npm
  • Python 3 for the portable schema replay test
  • A Google OAuth web client for real sign-in

Start

git clone https://github.com/caciitg/c-and-assess.git
cd c-and-assess
npm ci
cp .env.example .env.local
npm run dev

Open http://localhost:3000. Add the local Google callback URL shown in the setup guide before testing sign-in.

Check a change

npm run check
npm audit --omit=dev

For the database, OAuth, migrations, storage binding and deployment steps, follow Setup and deployment.

Documentation map

If you want to… Read
Understand the components and request flow Architecture
Use the candidate or organizer product Product guide
Prepare CSV files and map images correctly CSV import guide
Run locally or deploy a new instance Setup and deployment
Move production to the club Cloudflare account Club Cloudflare cutover
Operate an assessment safely Operations runbook
See every known limitation and its reason Limitations and roadmap
Understand the role of AI in the build AI-assisted development
Propose a change Contributing
Report a vulnerability privately Security policy

Honest scope

C&Assess is ready for controlled pilots and further club development. It is not yet a substitute for a proctored hiring vendor: webcam/screen surveillance, secure coding sandboxes, plagiarism detection, file submissions and high-stakes identity verification are intentionally outside the current release. Each limitation and the reason behind it is documented in Limitations and roadmap.

Ownership and licence

The application code is available under the MIT Licence. The C&A name, logo and brand artwork remain the property of the Consulting & Analytics Club, IIT Guwahati and are not granted for unrelated use by the software licence; see NOTICE.

Built by Abhishek Das for the Consulting & Analytics Club, IIT Guwahati. Maintained with the C&A Team.

About

Full-stack assessment, scoring and post-test analytics platform for C&A IIT Guwahati.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages