Innovating Smart IoT Systems — A complete, production-ready company website with React frontend and Node.js/Express backend.
nexora/
├── client/
│ └── index.html ← Complete React-like SPA (HTML + CSS + JS)
│
├── server/
│ ├── index.js ← Express server entry point
│ ├── package.json
│ ├── routes/
│ │ ├── contact.js ← POST /contact
│ │ ├── support.js ← POST /support
│ │ └── career.js ← POST /career
│ └── controllers/
│ ├── contactController.js
│ ├── supportController.js
│ └── careerController.js
│
├── package.json ← Root scripts
└── README.md
# Navigate to the server folder
cd server
# Install dependencies
npm install
# Start server (port 5000)
npm start
# OR with auto-reload during development
npm run dev
You should see:
🚀 Nexora IoT Server running on http://localhost:5000
Simply open client/index.html in your browser:
# macOS
open client/index.html
# Linux
xdg-open client/index.html
# Windows
start client/index.html
OR serve it with a simple HTTP server:
# Using Python (no install needed)
cd client && python3 -m http.server 3000
# Then visit http://localhost:3000
# Using Node.js npx
cd client && npx serve .
| Method | Endpoint | Description |
|---|---|---|
| POST | /contact | Submit contact form |
| GET | /contact | List messages (admin) |
| POST | /support | Submit support ticket |
| GET | /support | List tickets (admin) |
| POST | /career | Submit job application |
| GET | /career | List applications |
| GET | / | Health check |
Contact Form:
curl -X POST http://localhost:5000/contact \
-H "Content-Type: application/json" \
-d '{"name":"John Doe","email":"john@example.com","message":"Hello Nexora!"}'
Support Ticket:
curl -X POST http://localhost:5000/support \
-H "Content-Type: application/json" \
-d '{"name":"Jane","productIssue":"Smart Home Hub","description":"Device not connecting"}'
Job Application:
curl -X POST http://localhost:5000/career \
-H "Content-Type: application/json" \
-d '{"name":"Dev","email":"dev@example.com","position":"IoT Engineer","resumeFileName":"resume.pdf"}'
server/)client/)All loaded via CDN — no build step required!
The controllers are pre-structured for MongoDB. To enable:
cd server && npm install mongoose
server/index.js:
const mongoose = require('mongoose');
mongoose.connect(process.env.MONGO_URI || 'mongodb://localhost:27017/nexora')
.then(() => console.log('✅ MongoDB connected'))
.catch(err => console.error('MongoDB error:', err));
server/models/:
// models/Contact.js
const mongoose = require('mongoose');
const ContactSchema = new mongoose.Schema({
name: String,
email: String,
message: String,
submittedAt: { type: Date, default: Date.now }
});
module.exports = mongoose.model('Contact', ContactSchema);
messages.push(entry) in controllers with:
const Contact = require('../models/Contact');
await Contact.create(entry);
| Page | Route | Features |
|---|---|---|
| Home | #home |
Hero, Features, Highlights, Why Choose Us, CTA |
| About | #about |
Story, Vision/Mission, Tech Stack, Team |
| Services | #services |
6 Service Cards, Process Steps, Consultation CTA |
| Support | #support |
FAQ Accordion, Support Ticket Form, Channels |
| Contact | #contact |
Company Info, Feedback Form → POST /contact |
| Careers | #careers |
Benefits, 4 Job Listings, Application Form |
| Token | Value |
|---|---|
| Primary | #00d4ff (Cyan) |
| Accent | #7b2fff (Purple) |
| Accent 2 | #ff6b35 (Orange) |
| Background | #020b18 (Deep Navy) |
| Card | #061425 |
| Font Display | Syne |
| Font Body | DM Sans |
Create server/.env for production:
PORT=5000
MONGO_URI=mongodb://localhost:27017/nexora
NODE_ENV=production
All pages are fully responsive with mobile-first navigation.
When the backend server is not running, all forms automatically fall back to demo mode — displaying a success message without an API call. This is handled gracefully in the JavaScript catch blocks.
MIT — Free to use and modify.
Built with ❤️ for Nexora IoT Solutions — Connecting the world, one device at a time.