Project · 3 files HTMLCSSJavaScript Beginner Live preview

Professional Student Registration Portal

Build a Professional Student Registration Portal from scratch using only HTML, CSS & JavaScript. A hands-on project designed for absolute beginners to understand form structure, styling, and basic validation - taught by Techage Innovations.

Updated 3 Oct 2026 497 lines 17 min read

What you will learn

  • How to structure a professional HTML5 registration form with semantic tags
  • How to create different input types - text, email, tel, date, radio, select, textarea and file upload
  • How to link external CSS and JavaScript files to HTML
  • How to style forms professionally using CSS variables, flexbox and responsive design
  • How to perform client-side form validation using vanilla JavaScript
  • How to show success messages and handle form submission without backend
  • Best practices for clean, commented and beginner-friendly code

Welcome to your first real-world project at Techage Innovations!

In this lesson, we will build a complete Student Registration Portal that you can use for any school, training center or bootcamp. We are keeping it very simple - no frameworks, no complex code. Just pure HTML, CSS and JavaScript.

This project is perfect because it covers 90% of what you need for any website form. Once you master this, you can build contact forms, login pages, application portals and more.

We have created 3 separate files for clarity:

index.html - The structure and content
style.css - The design and beauty
script.js - The brain and validation
You will learn step-by-step. First we write the HTML, then we make it beautiful with CSS, then we make it smart with JavaScript.

All the code is fully commented so you can understand every line. This is the same portal we use at Techage Innovations for our physical and online classes.

Live Demo Preview is available here.

To follow along, create a new folder on your desktop named student-portal and create the 3 files inside it.

Let's start building!

Official website: https://www.techageinnovations.com

LMS Portal: https://lms.techageinnovations.com

Contact us: hello@techageinnovations.com

WhatsApp: https://wa.me/2347033315307

index.html
Download
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Techage Innovations - Student Registration</title>
  <!-- Link to external CSS file -->
  <link rel="stylesheet" href="style.css">
</head>
<body>

  <!-- ===== HEADER SECTION ===== -->
  <header class="header">
    <div class="logo-area">
      <div class="logo-box">TI</div>
      <div>
        <h1>Techage Innovations</h1>
        <p>Learn • Build • Innovate</p>
      </div>
    </div>
  </header>

  <!-- ===== MAIN FORM CONTAINER ===== -->
  <main class="container">
    <div class="form-card">
      <h2>Student Registration Form</h2>
      <p class="subtitle">Fill in your details to join our courses</p>

      <!-- Registration Form Starts -->
      <form id="registrationForm">

        <!-- Full Name Field -->
        <div class="form-group">
          <label for="fullName">Full Name *</label>
          <input type="text" id="fullName" placeholder="e.g. John Doe">
          <small class="error-msg" id="nameError"></small>
        </div>

        <!-- Email Field -->
        <div class="form-row">
          <div class="form-group">
            <label for="email">Email Address *</label>
            <input type="email" id="email" placeholder="john@example.com">
            <small class="error-msg" id="emailError"></small>
          </div>

          <!-- Phone Field -->
          <div class="form-group">
            <label for="phone">Phone Number *</label>
            <input type="tel" id="phone" placeholder="e.g. 9876543210">
            <small class="error-msg" id="phoneError"></small>
          </div>
        </div>

        <!-- DOB and Gender -->
        <div class="form-row">
          <div class="form-group">
            <label for="dob">Date of Birth *</label>
            <input type="date" id="dob">
          </div>

          <div class="form-group">
            <label>Gender *</label>
            <div class="radio-group">
              <label><input type="radio" name="gender" value="Male"> Male</label>
              <label><input type="radio" name="gender" value="Female"> Female</label>
              <label><input type="radio" name="gender" value="Other"> Other</label>
            </div>
            <small class="error-msg" id="genderError"></small>
          </div>
        </div>

        <!-- Course Selection Dropdown -->
        <div class="form-group">
          <label for="course">Select Course *</label>
          <select id="course">
            <option value="">-- Choose a Course --</option>
            <option value="Web Development">Web Development</option>
            <option value="Portal Design">Portal Design</option>
            <option value="PHP/Laravel">PHP / Laravel</option>
            <option value="Python">Python Programming</option>
            <option value="UI/UX">UI/UX Design</option>
          </select>
          <small class="error-msg" id="courseError"></small>
        </div>

        <!-- Address Textarea -->
        <div class="form-group">
          <label for="address">Address</label>
          <textarea id="address" rows="3" placeholder="Enter your full address"></textarea>
        </div>

        <!-- Profile Photo Upload -->
        <div class="form-group">
          <label for="photo">Profile Photo</label>
          <input type="file" id="photo" accept="image/*">
        </div>

        <!-- Terms Checkbox -->
        <div class="form-group checkbox-group">
          <label>
            <input type="checkbox" id="terms">
            I agree to the Terms & Conditions *
          </label>
          <small class="error-msg" id="termsError"></small>
        </div>

        <!-- Buttons -->
        <div class="btn-group">
          <button type="reset" class="btn-secondary">Reset</button>
          <button type="submit" class="btn-primary">Submit Registration</button>
        </div>

      </form>
    </div>
  </main>

  <!-- Success Popup Modal (Hidden by default) -->
  <div id="successModal" class="modal hidden">
    <div class="modal-content">
      <h3>🎉 Registration Successful!</h3>
      <p>Welcome to Techage Innovations. We will contact you soon.</p>
      <button id="closeModal" class="btn-primary">Close</button>
    </div>
  </div>

  <!-- Link to external JS file -->
  <script src="script.js"></script>
</body>
</html>
3 files · 497 lines Download all (.zip)
Not running
Run the preview when you are readyIt runs in an isolated sandbox with no access to this site or your account.
Make it your ownOpen the HTML, CSS and JavaScript in the Playground, change anything, and see the result instantly.
Edit in Playground

Notes

Congratulations! You just built a professional registration portal.

Important notes for students:

This is a frontend-only project. Data is not saved to a database yet. In our next class (PHP & MySQL / Laravel), we will learn how to save this data to a real database and send email notifications.

Assignment:

Customize the portal with your own school name and colors
Add one extra field: e.g. "Parent/Guardian Phone Number"
Try to change the validation message style
Host it on your Techage Innovations student hosting account
Need help? Join our WhatsApp class group or email hello@techageinnovations.com with subject: HTML BEGINNER ASSIGNMENT

Common mistakes to avoid:
Do not forget to link your style.css and script.js correctly in the head and before closing body tag.
Always use the same ID names in HTML and JavaScript.
Test your form on mobile phone after building - responsiveness matters!

Next Lesson: How to deploy this portal to your free .techage subdomain and make it live.

Keep building!

Techage Innovations
Website Design & Development | Portal Design | Web Domain & Hosting | Training Online/Physical Class
www.techageinnovations.com

Related snippets

Browse CodeLab
Beginner Live preview

A responsive profile card

Build a clean profile card with semantic HTML and a few lines of CSS.

HTML
25 lines View snippet
Intermediate Live preview

Login page: HTML, CSS, JavaScript, PHP and MySQL

A complete sign-in page: the form, its styling, friendly checks in the browser, secure PHP and the users table.

HTMLCSSJavaScriptPHPSQL / MySQL
134 lines · 5 files View project
Hi there! 👋 Have a question about the courses or joining the class? Ask me.