A full-stack professional portfolio for Ecatu Ronald, Electrical & Automotive Systems Engineer in Kampala, Uganda.
The platform presents electrical field work, commercial-vehicle diagnostics, warranty operations, technical reporting, Tata Motors SkillPro training in Jamshedpur, and digital engineering as one connected professional system.
This package is not a static template. It includes the React website, Express API, first-party contact server, MongoDB integration, secure local persistence fallback, SMTP email support, protected administration routes, deployment files, launch scripts and an offline visual preview.
The Nexus edition is built around one idea:
Evidence becomes engineering.
The visual system combines a cinematic engineering grid with an editorial presentation of real field evidence.
The public contact form sends directly to the included API:
POST /api/contact
The server provides:
Without MongoDB, valid messages are saved to:
backend/data/contact-submissions.json
Without SMTP, messages remain stored but email notifications are not delivered.
Open the preview folder:
desktop-hero.png — desktop opening experience.mobile-hero.png — mobile opening experience.static-preview.html — self-contained offline visual preview.The static preview is for design review. The real contact form, database, email delivery and administration tools require the full project server.
START_PORTFOLIO.bat.http://localhost:3001.Node.js 20 LTS or newer is recommended.
chmod +x start-portfolio.sh
./start-portfolio.sh
npm install
npm run setup
npm run dev
http://localhost:5173http://localhost:3001http://localhost:3001/api/healthThe health response includes contactStorage plus a database object so you can quickly confirm whether MongoDB is connected, merely configured, or currently falling back to local file storage.
Build and serve the production-style application:
npm run preview:full
Copy the example environment file:
cp backend/.env.example backend/.env
On Windows:
copy backend\.env.example backend\.env
For local use without MongoDB:
DATABASE_REQUIRED=false
CONTACT_FALLBACK_FILE=./data/contact-submissions.json
For production MongoDB:
MONGODB_URI=mongodb+srv://USERNAME:PASSWORD@CLUSTER.SUBDOMAIN.mongodb.net/ecatu_portfolio?retryWrites=true&w=majority&appName=AppName
DATABASE_REQUIRED=true
If backend/.env is missing or MONGODB_URI is unset, the backend logs a startup warning and /api/health reports that contact storage has fallen back to the local file.
For email delivery:
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=your-smtp-user
SMTP_PASS=your-smtp-password
ADMIN_EMAIL=ronaldecatu@gmail.com
EMAIL_FROM_NAME=Ecatu Ronald Portfolio
Never place credentials in frontend files or commit the real .env file.
Add secure administrator values to backend/.env, then run:
npm run admin:create
Administrator login:
http://localhost:3001/admin/login
npm run verify
This runs backend linting, frontend linting and TypeScript validation, then production builds for both applications.
frontend/src/data/portfolio.ts Biography, jobs, education, skills, projects and gallery
frontend/src/components/nexus/ Nexus public experience components
frontend/src/components/Header.tsx Main navigation and mobile menu
frontend/src/components/Contact.tsx First-party contact interface
frontend/src/nexus.css Nexus design system and responsive rules
frontend/src/index.css Shared and administration styles
frontend/public/images/ Optimised photographs and social artwork
backend/src/routes/contact.ts Contact validation and routing
backend/src/controllers/ API behaviour
backend/src/services/contactStore.ts Database and file persistence
backend/src/services/emailService.ts Email delivery
backend/src/templates/ Email templates
See NEXUS_UPGRADE_REPORT.md, BUILD_REPORT.md, SERVER_SETUP.md, PREVIEW_INSTRUCTIONS.md and LAUNCH_CHECKLIST.md.