FUTA
Credence

Changelog

Track the evolution of Credence. See what's new, what's improved, and what's fixed in each release.

2.0.2

Version 2.0.2

Latest
2026-05-01

Changed

  • README.md — FUTA-Only Focus: Removed "Target Institutions" expansion list (UNILAG, UI, OAU, ABU, etc.). Platform is now explicitly documented as a case study of FUTA only.
  • README.md — Certificate Template: Updated to match actual jsPDF implementation in certificateService.ts: Google Sans for body text, CauseReg/CauseBold for ceremonial elements, corrected font sizes (graduate name/degree: 23pt, department: 17pt), updated layout with FUTA logo centered (22mm), watermark at 5.5% opacity, signature dimensions (VC/Registrar: 42×20mm, passport photo: 30×30mm), date line with underlined day/month-year blocks, footer with generation timestamp and blockchain TX.
2.0.1

Version 2.0.1

Patch
2026-05-07

Changed

  • T_verify Formula Corrected: Replaced the incorrect T_upload component with T_request across all six display sites: metricsController.ts (model string), admin dashboard, admin verifications modal, admin blockchain cryptographic models panel, employer history modal, and graduate verification modal. The correct formula is now T_verify = T_request + T_hash + T_query + T_network everywhere.
  • Landing Page Consortium Animation Rebuilt: Replaced the basic rotating-dots orbit with a full SVG network topology: FUTA hub (center, pulsing glow ring) connected to 6 labelled Hyperledger Fabric nodes (Peer 1, Peer 2, Peer 3, Orderer, Cert Auth, FabConnect API) via hub-spoke lines and a gossip ring. Animated animateMotion data packets flow from hub to each node and back, colour-coded by direction. Each outer node shows type (blue/green/purple/yellow border) and role sub-label.

Added

  • UPTIME.md Guide: New guide for keeping the Render blockchain gateway awake on the free tier. Documents three options: UptimeRobot HTTP monitor (step-by-step), cron-job.org cron job, and Render Starter plan upgrade. Includes expected latency table and notes on the /health endpoint safety.

Fixed

  • blockchain/README.md: Health response example corrected: "channel": "defaultchannel" → "channel": "default-channel" and "chaincode": "credence" → "chaincode": "credence_gateway" to match actual Kaleido deployment values.
  • backend/README.md: All four references to "Railway" updated to "Render"; example gateway URL updated from railway.app to onrender.com domain pattern.
  • README.md (root): Live demo URL corrected from credence.vercel.app to credencely.vercel.app (both header and contact section).
2.0

Version 2.0.0

Major
2026-05-01

Added

  • Performance Metrics on Every Verification: verifyCertificate controller now measures and returns a full T_verify timing breakdown: tUploadMs (DB fetch), tHashMs (SHA-256 recompute), tQueryMs (blockchain query), tNetworkMs (round-trip overhead). The total verificationTimeMs is stored in the Verification record.
  • Merkle Tree Certificate Set Integrity: CertificateMerkleTree class builds a SHA-256 binary Merkle tree from all active certificates and generates inclusion proofs. verifyCertificate now runs a Merkle proof check and returns merkleIntegrity in the response.
  • Security Detection Rate (D_r): verificationModel.ts Model 8: D_r = (detected / total) × 100. Failed/revoked verifications count as detected forgery attempts.
  • System Throughput (θ): verificationModel.ts Model 9: θ = N / t (verifications per second) measured over last-24h and last-1h windows.
  • /api/v1/metrics Endpoint: Admin-only GET endpoint returning aggregate system performance: avg/min/max T_verify with target check, D_r detection rate, θ throughput (24h & 1h), certificate and verification counts.
  • Admin Dashboard System Metrics Panel: /dashboard/admin — New three-card panel showing Avg T_verify (with 3s target indicator), D_r detection rate, and θ throughput. Fetched in parallel with existing stats.
  • Admin Verifications Metrics Banner: /dashboard/admin/verifications — System-wide metrics panel at the bottom of the verifications list page.
  • Admin Verifications Clickable Rows: Each table row opens a detail modal showing certificate key, verifier, company, IP, timestamp, and a T_verify progress bar with target indicator.
  • Graduate Verification Enhanced Modal: /dashboard/graduate/verification — Existing detail modal extended with a T_verify performance panel (value, target badge, progress bar). Verifier name now shows employer name/company (no more "Anonymous" — auth gate on /verify page ensures identity).
  • Employer History Clickable Cards: /dashboard/employer/history — Each verification card is now clickable. Opens a detail modal with full certificate details and T_verify performance panel. Timing shown inline on card in green (≤ 3s) or orange (> 3s).
  • metricsApi.getSystemMetrics(): New API client method calling GET /metrics.
  • SystemMetrics Type: TypeScript interface for the /metrics response, including nested performance metrics, detection rate, and throughput shapes.
  • VerificationResult Extended: Added performanceMetrics (formula, tVerifyMs, breakdown, withinTarget) and merkleIntegrity (root, certificateSetSize, inCertificateSet) optional fields.

Changed

  • VerificationRecord Type: Added verificationTimeMs?: number as a supplementary alias alongside verificationTime.
  • verifyCertificate Controller: Now records tUploadMs, tHashMs, tQueryMs, tNetworkMs and includes them in the API response under performanceMetrics. Merkle proof included in response under merkleIntegrity. Local hash integrity check (localHashValid) included in blockchainRecord.
  • Employer History Cards: Added inline timing display and ChevronRight affordance indicator to signal clickability.
  • Graduate Verification List: Verifier shown as employer name + company; falls back to company name if full name unavailable (never "Anonymous").
  • NEXT_PUBLIC_BLOCKCHAIN_NETWORK: Clarified as a display-only label; does not affect runtime behavior. Recommended value: Hyperledger Fabric (Kaleido).

Fixed

  • metricsController.ts: Was filtering by createdAt (non-existent field); corrected to verifiedAt to match the Prisma Verification model schema.
  • forgotPassword Controller: Was returning 404 for non-existent emails (confusing HTTP semantics); changed to 200 {success: false} so the frontend can handle it gracefully without a catch block.
  • Toaster in Root Layout: Added global Toaster position="top-right" so toast notifications work on all non-dashboard pages (forgot password, login, register).
  • Admin Verifications Page TypeScript: Added React default import and uppercase SelectedIcon variable to allow Lucide icon components to be used as JSX element tags from object properties.

Security

  • Auth Gate on /verify Page: Public certificate verification page now requires authentication via authenticate middleware; anonymous verification is no longer possible. Employer identity is always captured for every verification attempt.
1.9

Version 1.9.0

Minor
2026-04-27

Changed

  • Deployment Platform Migrated: Railway → Render: For the blockchain gateway microservice (blockchain/). Railway's free tier expires after 30 days; Render's free tier has no expiry. All documentation, code comments, and configuration updated to reflect this.
  • blockchain/src/fabric.ts: Renamed FakeContract interface to FabConnectContract to accurately reflect its purpose — it is a real HTTP adapter to Kaleido FabConnect, not a mock implementation.
  • blockchain/src/routes.ts: Updated health check comment from "Railway" to "Render".
  • backend/src/services/blockchainService.ts: Updated header comment from "deployed on Railway" to "deployed on Render".
  • blockchain/README.md: Replaced all Railway references with Render throughout; deployment instructions updated to Render web dashboard steps; added UptimeRobot guidance for free-tier uptime.
  • WIKI.md: Updated system architecture diagram, technology stack, prerequisites, blockchain setup instructions, chaincode function signatures (Go → JavaScript), connection profile (Docker → Kaleido FabConnect), and troubleshooting guide.
  • SECURITY.md: Updated Blockchain Gateway Security section to reflect Render hosting and HTTPS + Basic Auth transport (replacing gRPC mTLS mention).
  • Root README.md: Updated Blockchain Layer description, Blockchain Technologies table (removed @hyperledger/fabric-gateway and @grpc/grpc-js, added Kaleido FabConnect), production architecture diagram (Railway → Render, gRPC → HTTPS + Basic Auth), smart contract code samples (Go → JavaScript from credentialContract.js), and Getting Started blockchain step.
  • frontend/app/(landing)/page.tsx: Fixed chaincode file label in the UI demo section from credential.go to credentialContract.js and status bar language from Go | Chaincode v1.0 to JavaScript | Chaincode v1.0.

Added

  • blockchain/DEPLOY.md: New comprehensive step-by-step deployment guide for deploying the blockchain gateway to Render using the web dashboard (no CLI). Includes all real environment variable values, health check verification, Vercel backend configuration steps, and UptimeRobot setup for free-tier uptime.

Removed

  • deploy-blockchain.sh: Deleted — was a Kaleido credential extractor for the old gRPC-based gateway (base64 TLS certs, user certs, private keys). No longer needed since FabConnect requires only HTTP Basic Auth credentials, not X.509 certificates.
  • deploy-blockchain.bat: Deleted — was the old Docker Compose blockchain network deploy script for local Fabric infrastructure. Replaced entirely by Kaleido managed network + Render hosting.
  • Root vercel.json: Deleted — was a leftover monorepo deployment config attempting to build both frontend and backend together. Frontend and backend are deployed as separate Vercel projects, each with their own configuration.
1.8.1

Version 1.8.1

Patch
2026-04-20

Changed

  • blockchain/src/fabric.ts Completely Rewritten: Replaced @hyperledger/fabric-gateway gRPC connection with Kaleido's FabConnect REST API (HTTP + Basic Auth via axios). No X.509 certificates, TLS certs, or private keys are needed — Kaleido's managed FabConnect handles identity and signing internally. The public getFabricContract() interface is preserved so routes.ts required zero changes.
  • blockchain/package.json: Removed @hyperledger/fabric-gateway and @grpc/grpc-js; added axios. Bundle is now ~90% smaller.
  • Environment Variables Simplified: Replaced FABRIC_PEER_ENDPOINT, FABRIC_MSP_ID, FABRIC_PEER_TLS_CERT_B64, FABRIC_USER_CERT_B64, FABRIC_USER_KEY_B64 with FABCONNECT_URL, FABCONNECT_USERNAME, FABCONNECT_PASSWORD, FABCONNECT_SIGNER.
  • blockchain/.env.example: Updated to reflect FabConnect env vars with actual Kaleido deployment values.
  • blockchain/README.md: Updated architecture diagram, stack table, env vars table, and security section.

Added

  • Chaincode Initialized on Kaleido: credence_gateway chaincode deployed to default-channel and initialized at block 6. End-to-end test confirmed (VerifyCertificate query returns correct NOT_FOUND response).
  • FabConnect Identity Registered: credence-app identity enrolled in Kaleido FabConnect — used as the transaction signer for all chaincode interactions.

Fixed

  • Chaincode Name Corrected: From credence-gateway (hyphen) to credence_gateway (underscore) — Kaleido normalizes App names to underscores when committing to the channel.
  • Channel Name Corrected: From defaultchannel to default-channel — matches the name Kaleido auto-created.
1.8

Version 1.8.0

Minor
2026-04-20

Added

  • Hyperledger Fabric Gateway Microservice (blockchain/): New Express.js + TypeScript service (initially deployed on Railway, later migrated to Render in v1.9.0) that bridges the Vercel backend to a live Hyperledger Fabric 2.4 network on Kaleido via gRPC. Exposes authenticated REST endpoints: POST /certificate/issue, GET /certificate/verify/:key, POST /certificate/revoke, GET /certificate/:key, GET /certificate/:key/history, GET /health
  • Node.js Chaincode (blockchain/chaincode/lib/credentialContract.js): Hyperledger Fabric smart contract implementing five functions — IssueCertificate, VerifyCertificate, RevokeCertificate, GetCertificate, GetCertificateHistory — using fabric-contract-api and CouchDB-compatible rich queries
  • KALEIDO-SETUP.md: Comprehensive step-by-step guide covering Kaleido account setup, environment/member/peer creation, channel creation, chaincode lifecycle (package → install → approve → commit), credential extraction to base64, and Vercel env var configuration
  • deploy-blockchain.sh: Extracts TLS cert, user cert, and private key from a Kaleido exported ZIP and prints base64-encoded values for Railway environment variables (later superseded by FabConnect REST API which needs no certificates — deleted in v1.9.0)
  • blockchain/README.md: Folder-level documentation for the gateway service — architecture, all REST endpoints, environment variables, local dev, Railway deployment, and security notes
  • backend/README.md: Folder-level documentation for the Express API — stack, project structure, all API endpoints with auth requirements, blockchain integration notes, environment variables, and deployment
  • frontend/README.md: Folder-level documentation for the Next.js app — stack, project structure, all page routes, auth flow, certificate verification flow, and key components

Changed

  • blockchainService.ts Completely Rewritten: Replaced fabric-network SDK (incompatible with Vercel serverless) with plain fetch calls to the blockchain gateway (deployed on Railway at the time, later migrated to Render in v1.9.0). Same public API (recordOnBlockchain, verifyOnBlockchain, queryBlockchainRecord, revokeCertificateOnBlockchain) — no callers changed. Falls back to mock mode only when BLOCKCHAIN_GATEWAY_URL is not set (local dev without Fabric)
  • blockchain/src/routes.ts: Removed all silent mock fallbacks. Certificate endpoints now return 503 Service Unavailable if FABRIC_* env vars are not set — the gateway is a live Fabric proxy, not a simulator. Health endpoint always responds and returns 503 degraded when unconfigured
  • blockchain/ Directory Renamed: From blockchain-gateway/ to blockchain/ for clarity; old Docker-based blockchain/ folder (local Fabric via Docker Compose) deleted — replaced entirely by the Kaleido + Railway approach (later Render)
  • backend/blockchain/connection-profile.json: Updated from local Docker peer/orderer config to a Kaleido reference template (not read at runtime — informational only)
  • Root README.md: Updated Technology Stack (Blockchain section now lists Kaleido, @hyperledger/fabric-gateway, Railway), Production Architecture diagram (added Railway gateway node between backend and Kaleido), Getting Started (blockchain step replaced with Kaleido guide reference), and Environment Variables (replaced FABRIC_NETWORK_CONFIG with BLOCKCHAIN_GATEWAY_URL)
  • deploy-blockchain.bat and deploy-blockchain.sh: Old Docker Compose orchestration scripts replaced with Kaleido credential extractor

Removed

  • Old Docker Compose Fabric Network (blockchain/docker-compose.yml, blockchain/scripts/, blockchain/crypto-config/, blockchain/channel-artifacts/, blockchain/chaincode/ in Go, blockchain/configtx.yaml)
  • fabric-network SDK Dependency Removed from backend/package.json: No longer called directly from Vercel serverless functions

Security

  • API Key Guard on Gateway: All certificate endpoints on the gateway require x-api-key header matching GATEWAY_API_KEY — prevents public access to the Fabric network
  • No Fabric Credentials on Vercel: All gRPC identity material (TLS cert, signing cert, private key) lived on Railway env vars — Vercel only holds the gateway URL and API key (later simplified to Basic Auth credentials on Render in v1.9.0)
  • No Mock Mode in Gateway: Silent mock fallback removed from the gateway service — misconfiguration now surfaces as a clear 503 instead of silently returning fake transaction IDs
1.7

Version 1.7.0

Minor
2026-04-19

Added

  • Premium Certificate PDF Redesign: Complete rewrite of generateCertificatePDF using jsPDF — A4 landscape, multi-layer borders, gold corner accents, full-page FUTA watermark (5.5% opacity via GState), inline mixed-font academic detail lines matching the README template, bullseye official seal, signatures always appear before the QR code, and an Issued date added to the footer
  • optionalAuthenticate Middleware: New middleware in auth.ts that reads the Bearer JWT if present but does not reject unauthenticated requests; replaces the unprotected /certificates/verify route so employer identity is recorded on every verification while public access is preserved
  • Verification History for FAILED/REVOKED: Failed and revoked verifications are now fully logged in employer history — the root cause was the /verify route bypassing authentication, so employerId was always null; fixed by attaching optionalAuthenticate
  • Toaster in Dashboard Layout: Added react-hot-toast's Toaster position="top-right" to (dashboard)/layout.tsx; all toast.success / toast.error calls throughout the dashboard were silent because no Toaster was mounted
  • Employer QR Camera Error Feedback: startScanner catch block in employer/history/page.tsx now calls toast.error(...) and resets scanning state, so camera failures are no longer silent
  • Admin Blockchain Mock Mode Badge: Admin blockchain page displays an amber pulsing badge when status.connected === false, clearly communicating that blockchain data is simulated

Fixed

  • PDF Download 403 for Employers: downloadCertificate ownership check now only applies to the GRADUATE role; admins and employers bypass it. EMPLOYER was added to requireRole(...) on the download route
  • PDF Generation 500 Error: Migrated from pdf-lib + @pdf-lib/fontkit (which failed on Vercel's serverless environment) to jsPDF with addFileToVFS/addFont — same pattern as the working reportController.ts
  • Blockchain Verification Mock Fallback: verifyOnBlockchain in blockchainService.ts now catches the MODULE_NOT_FOUND error for the missing native CryptoSuite_ECDSA_AES module and falls back to mock-mode validation (hash comparison) instead of returning isValid: false
  • Graduate Sidebar "My Certificate" Active State: isActive in DashboardSidebar.tsx now uses pathname.startsWith(item.href + "/") for /dashboard/graduate/certificates and /dashboard/admin/certificates, so the link stays highlighted when viewing a specific certificate detail page
  • Certificate Detail Page Not Full-Width: Removed max-w-2xl constraint from [certificateId]/page.tsx; content now fills the full dashboard main area on desktop
  • Em Dash in Certificate PDF: Replaced — (U+2014) with - (hyphen) in the footer "Generated by" line
  • Em Dash in Graduate Certificate Detail UI: DetailRow fallback changed from "—" to "N/A"

Changed

  • PDF Backend Dependency: Removed @pdf-lib/fontkit from backend/package.json; jsPDF and jspdf-autotable are now the sole PDF libraries
  • Certificate Layout: Signatures and official seal now appear between the academic details and the QR code (matching the README specification); the QR code is followed by a "Scan QR code to verify" caption
  • Footer Content: Footer now includes Issued: [date], Blockchain TX: [short], and "Generated by Credence - ..." (no em dash)
  • Certificate Key in Footer: Certificate key is displayed prominently in bold as the first footer item

Security

  • Verification Route Authentication: POST /certificates/verify now calls optionalAuthenticate so authenticated employer sessions are captured; the route remains accessible without a token for public/unauthenticated verification

Technical

  • Watermark Uses jsPDF GState Opacity API: new (doc as any).GState({opacity: 0.055}) with saveGraphicsState / restoreGraphicsState
  • Inline Mixed-Font Academic Text: Rendered via an inline() helper that accumulates X position with doc.getTextWidth() called per segment
  • react-hot-toast Version Already Present: In frontend package.json; only a Toaster mount was missing
1.6

Version 1.6.0

Minor
2026-04-16

Added

  • OTP-Based Email Verification System: Replaced token-link verification with secure 6-digit OTP via nodemailer. Zod validation for numeric input.
  • OTP-Based Forgot Password Flow: 3-step flow: Email submission, OTP validation, New password creation.
  • Auto-Login Post-Verification: verifyEmail returns JWT tokens for immediate session creation and dashboard redirect.
  • Resend Verification Endpoint: POST /api/v1/auth/resend-verification with cooldown timer UI.
  • Comprehensive Profile Management: PATCH endpoints for profile, academic, and professional data.
  • Verification Statistics API: Graduate stats (views, verifications, 7-day activity) and global admin stats.
  • Graduate Stats Dashboard: Real-time data from verification API replacing mock data.

Fixed

  • CORS Trailing Slash: Sanitized allowedOrigins to match browser Origin headers (no trailing slashes).
  • Dashboard Refresh Logic: Fixed Math.random() fake stats, now calls real API.
  • Settings Page Persistence: Added missing backend PATCH handlers for profile data.
  • Forgot Password Data Structure: Fixed 3-step state machine isolation.
  • Email Template Redundancy: Removed duplicate branded button blocks.
  • Welcome Email Trigger: Now sends only after successful OTP verification.
  • Authentication Flow Security: Login returns 403 if email not verified.
  • Refresh Token Interceptor: Standardized path to /api/v1/auth/refresh.

Changed

  • Authentication Request Structure: Verify Email: { email, otp } body. Forgot Password: 15-min OTP. Reset Password: { email, otp, password } body.
  • API Client Architecture: Updated signatures for resetPassword, verifyEmail, resendVerification. Added getGraduateStats.

Security

  • Enhanced Email Security Headers: Added X-Mailer, X-Priority, List-Unsubscribe, Precedence headers.
  • OTP Expiry Enforcement: Verification OTPs expire 10 min, Password Reset OTPs expire 15 min.
  • Admin Confirmation Gate: Admin must re-enter password before certificate issuance.

Technical

  • Backend Stability: npm run build completes with exit code 0, zero TypeScript errors.
  • Frontend Stability: next build compiles all 22 routes without type errors or ESLint warnings.
  • Database Schema Evolution: New controllers: updateProfile, updateAcademicInfo, updateProfessionalInfo, resendVerification, getGraduateVerificationStats, getVerificationStats.
1.5

Version 1.5.0

Minor
2026-04-15

Added

  • Premium UI/UX Design System: Redesigned dashboards with brand-consistent blues, refined typography, improved cards with depth.
  • Advanced Motion Graphics: Framer Motion staggered animations, hover-state animations for tactile feedback.
  • Ambient Visual Effects: Subtle background gradients on dashboard cards.
  • Blockchain Setup Guide: Quick Start guide for local Hyperledger Fabric network with Common Issues section.
  • Dashboard Functionality: Refresh buttons with loading spinners and toast notifications. Professional copywriting.

Enhanced

  • Visual Consistency: Unified design language, standardized gradients, rounded corners, spacing scales.
  • Performance Optimization: Optimized animations with layout prop, lazy-loading charting libraries.
  • Mobile Responsiveness: Grid columns collapse gracefully on devices smaller than 768px.

Technical

  • Build Reliability: Clean frontend build with zero warnings and errors.
  • Component Architecture: Refactored common UI elements into reusable components (StatCards, ActionButtons).
1.4.1

Version 1.4.1

Patch
2026-04-15

Fixed

  • Vercel Production Deployment: Configured Express.js for Serverless Functions, fixed TypeScript build, removed conflicting functions property.
  • Environment Variables & Secrets: Updated Vercel dashboard and local .env with production values.
  • Frontend Mobile UX: Fixed CTA button stacking, enhanced forgot password error handling.
  • Asset Configuration: Updated links to custom domains, fixed email template configurations.
  • Supabase Integration: Verified and added actual Project Reference and API Keys.
1.4

Version 1.4.0

Minor
2026-04-15

Added

  • Advanced Rate Limiting Middleware: Tiered system (Auth: 5/15min, Upload: 10/hour, General: 100/15min) with IP tracking.
  • Strict CORS Configuration: Origin whitelist validation, credentials support.
  • Security Headers (Helmet): CSP, HSTS, X-Frame-Options integration.
  • Request Validation & Sanitization: Content-Type validation, SSRF detection patterns.
  • UI Enhancements: Radix UI tooltips, Profile Completion system, reusable confirmation modals.
  • CSRF Protection: Token validation on state-changing requests.
  • Security Middleware Module: Consolidated security middleware into dedicated module.

Security

  • Defense in Depth: Multi-layered security architecture.
  • Request Monitoring: Logging for suspicious activities.
  • Token Storage: HttpOnly cookies for Refresh Tokens, Memory/React State for Access Tokens.
1.3

Version 1.3.0

Minor
2026-04-15

Added

  • Certificate Fraud Prevention Logic: Removed self-reporting of CGPA/degree. Only Admins can assign credentials.
  • Enhanced Password Security: Visibility toggles, Caps Lock detection, strength meter (Red/Yellow/Green).
  • Profile Picture System: react-image-crop integration, backend validation for PNG/JPG and size limits.
  • Profile Management: Phone numbers, comprehensive settings, /dashboard/settings route with tabs.
  • Degree Assignment Logic: Faculty to Degree Type validation mapping.
  • Blockchain Integration: Auto-generates Blockchain Key and QR Code on certificate issuance.

Changed

  • Registration Flow: Simplified to Step 1 (Name, Email, Matric, Password). Academic data moved to Settings.
  • Employer Requirements: Added validation for Company Name and Position.
  • Database Schema: Made CGPA, degreeType, faculty, department, graduationYear nullable.

Security

  • Fraud Elimination: Architecturally prevented fake degree registration without Admin oversight.
  • Profile Security: Server-side MIME type and file size validation.
1.2

Version 1.2.0

Minor
2025-04-15

Added

  • Marketing Content: About section with solid blue background, Hyperledger Fabric logo in Technology section.
  • Backend Validation: Email validator utility, real-time API endpoint for format validation.
  • Blockchain Core: Go Chaincode (IssueCertificate, VerifyCertificate, RevokeCertificate), Docker Compose scripts.

Changed

  • Branding & Identity: Replaced Credence Shield with FUTA Logo, moved logo inside form container, moved About to first nav position.
  • CORS Configuration: Added localhost:3001 and 127.0.0.1:3001 to allowed origins.
  • Privacy: Updated landing page example data with generic placeholder Matric Number.

Fixed

  • CORS Errors: Resolved pre-flight request failures on localhost configurations.
  • 404 Routing: Implemented catch-all route with custom designed 404 page.
  • Email Policy: Enforced @futa.edu.ng domain validation for Admin/Graduate registration.
1.1

Version 1.1.0

Minor
Previous Release

Changed

  • Visual Design: CTA background to solid bg-blue-600, white primary button, consistent blue stakeholder cards.
  • Typography: Superscript notation for collision probability, removed star SVG from 404, first-person perspective in About.

Added

  • Documentation: Blockchain Consortium System section, technical docs (VERIFICATION_LOGIC.md, MATHEMATICAL_ALGORITHMS.md), Mathematical Foundation section.
  • Features: Real-time email validation, Hyperledger Fabric logo in footer, Enterprise Security and Immutable Ledger pillars.

Fixed

  • Mobile Layout: Fixed Trio of Features display on mobile.
  • Icons: Resolved Shield import error with ShieldCheck.
  • CORS: Added dynamic origin validation for local dev ports.
  • Vertical Spacing: Added spacing between hero columns on mobile.
1.0

Version 1.0.0

Major
2026-04-14

Added - Initial Release

  • Project Initialization: Monorepo structure with /frontend, /backend, /blockchain directories. TypeScript configuration.
  • Frontend (Next.js 14): Application Router, Framer Motion, FUTA-branded Landing Page.
  • Backend (Express.js & Node.js): RESTful API, Prisma ORM, JWT authentication, bcryptjs password hashing.
  • Database (PostgreSQL via Supabase): User, Certificate, Verification models with connection pooling.
  • Blockchain (Hyperledger Fabric 2.5): Docker network, GoLang Chaincode, FUTA MSP, permissioned channel.
  • Core Features: RBAC, @futa.edu.ng validation, PDF generation, QR codes, SHA-256 hashing, Dashboards (Admin/Graduate/Employer).
  • Performance: Sub-60 second verification SLA.
  • Documentation: README.md, SECURITY.md, CONTRIBUTING.md, LICENSE files.

Stay Updated

Follow our GitHub repository to track development progress and get notified of new releases.