← All work

NexIOT Robotics Academy

A production course-management platform for an Arduino and IoT training academy — public site, student portal, and admin dashboard.

  • Next.js
  • Tailwind CSS
  • Framer Motion
  • Express
  • Sequelize
  • MySQL
  • JWT
  • Nodemailer

Screens

Public landing page — courses, kits, and registration entry points
Public landing page — courses, kits, and registration entry points
Three course tracks, served from MySQL with coming-soon gating
Three course tracks, served from MySQL with coming-soon gating
Student project gallery, managed from the admin dashboard
Student project gallery, managed from the admin dashboard
Conversion CTA and footer with click-to-chat WhatsApp
Conversion CTA and footer with click-to-chat WhatsApp

Problem

The academy had no way to take enrolments online — course enquiries arrived by WhatsApp and were tracked by hand, so nothing was searchable and nothing was reportable. They needed a site that both sold the courses and captured the registrations behind them.

Role

Sole developer across both halves: the Next.js App Router frontend and the Express/Sequelize API, plus the MySQL schema, the transactional email templates, and the admin dashboard.

Key decisions

The public pages read through a fallback-aware data layer: if the API is unreachable they render bundled placeholder content instead of failing. A marketing site that 500s because a database is restarting costs real enrolments, and the content it shows barely changes between deploys. Email is deliberately best-effort for the same reason — a registration is saved and acknowledged whether or not SMTP answers, rather than being lost to a mail server timeout.

Challenges

Convenience in development turned into a production hazard: the API used `sequelize.sync()` to shape tables, which is fine against a throwaway database and destructive against a real one. Untangling that into an explicit migration path was the precondition for going live. Spam on the public forms was the other one, handled with rate limiting, server-side validation, and a honeypot field.

Outcome

Live at nexiot.lk, taking real course registrations and enquiries.