惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
C
Check Point Blog
J
Java Code Geeks
腾讯CDC
Martin Fowler
Martin Fowler
MongoDB | Blog
MongoDB | Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 三生石上(FineUI控件)
Apple Machine Learning Research
Apple Machine Learning Research
大猫的无限游戏
大猫的无限游戏
Engineering at Meta
Engineering at Meta
罗磊的独立博客
Last Week in AI
Last Week in AI
B
Blog
IT之家
IT之家
S
SegmentFault 最新的问题
D
DataBreaches.Net
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
GbyAI
GbyAI
博客园 - 聂微东
U
Unit 42
有赞技术团队
有赞技术团队
Y
Y Combinator Blog
MyScale Blog
MyScale Blog

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
Fast-Track CBT: A Clean, Zero-Stress Online Testing Platform
Joseph · 2026-05-26 · via DEV Community

react#
nodejs#
mongodb#
githubcopilot#
webdevelopment

This is a submission for the GitHub Finish-Up-A-Thon Challenge

🛡️ What I Built
⚡ TL;DR:
Fast-Track CBT is a full-stack, automated testing platform designed to make exams stress-free.

Gives administrators secure, private workspaces to create and manage tests.

Features a high-speed batch-add system to enter 50+ questions in minutes.

Protects students with an auto-submit countdown timer that never loses their work.

Keeps the database perfectly clean with automated cascade deletes.

📖 Description:
A fast and simple online testing platform built for two users: teachers who want to set questions without pulling their hair out, and students who want a smooth testing experience with instant results. It solves the problem of messy exam management and lost student data.

🚀 Unique Innovation:
It combines strict database rules ("No Subject = No Question") with a highly polished frontend. Administrators get multi-tenant privacy, while students get a beautiful, mobile-friendly interface to take tests and instantly print clean result documents.

🏗️ Architecture Overview:
⚡ Complete testing engine built with the MERN stack (MongoDB, Express, React, Node.js).

Demo
Live Website: https://onlinecbt.vercel.app/
GitHub Code: https://github.com/Joseph-fol/Online-CBT.git

Key Features:

🔒 Admin Privacy: Secure multi-tenant architecture so Admin A never sees Admin B's data.

⚡ Fast Question Entry: Batch-add feature allows continuous typing and saving without page reloads.

⏱️ Strict Countdown Timer: Auto-saves and submits the exact second the clock hits 00:00.

🖨️ Modern UI & Print Feature: Students can instantly generate a clean, official copy of their results.

🧹 Smart Database Rules: Automated cascade deletes prevent orphaned data.

⚙️ Technical Implementation
🤖 My Experience with GitHub Copilot:

Use Case: Copilot acted as my smart coding partner to handle the heavy backend logic.

Database Fixes: When I needed to build the cascade delete function, Copilot helped me write the correct Mongoose logic to ensure all child questions were destroyed when a parent subject was deleted.

Frontend State: Copilot sped up the React state management for the live exam timer, allowing me to focus completely on the UI and the print layout.

🛠️ Tools Used: React (Frontend), Node.js & Express (Backend API), MongoDB Atlas (Database), Tailwind CSS (Styling & Print layouts).

🔗 Integration Points: REST API connecting a React web dashboard directly to a secure MongoDB cluster with real-time state updates for the exam timer.

🖼️ Workflow Sections Overview
🌐 Data Collection Layer (Admin):
A locked-down UI where subjects act as parent containers, routing hundreds of batch-added questions safely into the database.

🧠 Processing Core (Backend):
Node.js engine that grades student inputs instantly and strictly enforces data rules (rejecting any question not tied to a subject).

📨 Notification System (Student):
Instant score calculation displayed beautifully on the screen with a single-click print/share export function.

🚀 The Comeback Story (Journey)
🔧 Process: Before this challenge, this project was just a rough draft. The frontend was incomplete, and the database logic was messy. For example, if an admin deleted a test subject, all the old questions would stay behind as junk data. I stopped working on it because the core engine was too confusing.

🎯 Challenges Overcome:

Database Mess: Old questions were getting orphaned. → Solved by building a strict cascade delete in MongoDB.

Slow Data Entry: Adding questions took too long. → Solved by coding a seamless batch-add form that clears instantly but keeps the subject locked.

Lost Exams: Students losing work when time ran out. → Solved by building an auto-submit function tied to the timer state.

📚 Lessons Learned:

Clean database rules are just as important as a pretty frontend.

Building a "multi-tenant" app requires strict logic to keep user data isolated.

GitHub Copilot is incredible for writing boilerplate database schemas, giving developers more time to design.

📈 Impact & Scalability
💼 Immediate Value: Reduces teacher workload massively by making question entry fast. Completely removes student anxiety by auto-saving their exam the second time runs out.

🏢 Future Ready: The database is built cleanly enough to handle hundreds of schools and thousands of simultaneous test-takers without data overlap.

📋 Current Limitations & Vision
⚠️ Present Limitations:

Basic English-language UI.

Manual admin upgrades (teachers sign up, and the master admin switches their role in the database).

🗓️ Roadmap Vision:

Phase 2: Build an "Unlock Attempt" feature so if a student's internet crashes, an admin can pause and resume their exact test state.

Phase 3: Add email invitations for new teachers.

🔧 Technical Deep Dive: Behind the Architecture
I am excited to share the technical rules that make this platform so stable!

🏗️ Why These Technical Choices Matter

Data Isolation (Multi-Tenancy): Security is everything. The backend strictly filters database calls by the Admin's ID, ensuring total privacy between different teachers and schools.

The "No Subject = No Question" Rule: I built the system so a "Subject" (like Biology 101) dictates the overall rules (like the time limit). The database physically rejects any question that tries to save without a parent Subject.

The Cascade Delete Cleaner: This is where the app shines. If an admin permanently deletes a Subject, the database acts as a cleaner—instantly destroying every single Question and Student Result associated with it. Zero junk left behind.