Group Project 1: Team Website Guide

Group Project 1: Team Website Guide

Introduction

This project asks your team of 3-4 to build a multi-page, responsive website using HTML, CSS, and JavaScript. It is the largest early-semester project in CS300, worth 175 points and due Sunday, March 22, 2026 at 11:59 PM.

Real web development is almost never a solo activity. Developers work on teams, divide responsibilities, review each other’s code, and coordinate through version control. This project simulates that workflow from start to finish.

What you will learn:

  • How to build and maintain HTML, CSS, and JavaScript across multiple pages at scale
  • How to collaborate using Git branches, pull requests, and code review
  • How to communicate effectively as a development team
  • How to divide work, manage milestones, and deliver a polished product on deadline

This project spans approximately 6 weeks. You will need to plan, build, test, and present as a team. The skills you develop here – both technical and collaborative – carry directly into professional web development.

This project is as much about learning to collaborate as it is about building a website. The skills you develop here – Git workflow, code review, team communication – are the same skills employers look for.

Before You Start: Team Setup

Connect with Your Team

Exchange contact information with your team members. Set up a group chat using Discord, Slack, iMessage, or whatever platform everyone checks regularly. Make sure every member can be reached quickly.

Schedule Your First Meeting

Meet in person or over Zoom within the first few days. Decide on a regular meeting time that works for everyone – even 15-20 minutes twice a week makes a significant difference. Put it on your calendars.

Choose Your Project Option

As a team, decide which website type to build. Your options are:

  • Option A: Business/Company Website – restaurant, salon, gym, agency, etc.
  • Option B: Event/Conference Website – schedule, speakers, registration
  • Option C: Non-Profit/Cause Website – mission, how to help, events
  • Option D: Educational Resource Website – lessons, resources, interactive elements
  • Option E: Portfolio/Agency Website – project gallery, services, team

Vote as a team. Pick the option that excites the most members – enthusiasm leads to better work.

Assign Roles

Every team member contributes to all areas (HTML, CSS, JavaScript), but each person takes the lead on one domain to ensure quality and consistency:

RoleResponsibility
Project LeadCoordinates tasks, tracks milestones, runs meetings
HTML LeadEnsures semantic structure, valid HTML, consistent navigation
CSS LeadMaintains the design system, responsive layout, visual consistency
JavaScript LeadManages interactive features, ensures functionality across pages

For 3-member teams, one person may hold two roles (Project Lead often doubles with another role).

Set Up the GitHub Repository

One team member creates the repository and adds the others as collaborators:

  1. Create a new public repository on GitHub (e.g., cs300-group-project-1)
  2. Go to Settings > Collaborators and add each team member by their GitHub username
  3. Each collaborator accepts the invitation via email or GitHub notifications

Create a Project Plan

Use GitHub Issues, a shared Google Doc, or a simple checklist to track what needs to be built. Break the project into concrete tasks: “Build homepage HTML,” “Create shared navigation,” “Style the hero section,” “Add form validation,” etc.


Understanding the Requirements

Here is what each rubric category is worth and what I am looking for:

CriteriaPointsWhat This Means
HTML Quality30Semantic HTML5, valid markup, proper heading hierarchy across all 5+ pages
CSS Quality35Responsive design, mobile-first approach, Flexbox and/or Grid layouts, consistent design system
JavaScript Features30At least 3 working interactive features (mobile menu, form validation, carousel, etc.)
Design & UX25Consistent look and feel, intuitive navigation, professional appearance
Team Collaboration25Git history shows all members contributing, feature branches, pull requests, code review
Code Quality15Clean indentation, organized files, meaningful class and variable names
Documentation15Complete README with project info, team members, live URL, screenshots, setup instructions
Team Collaboration is worth 25 points. I review your Git history to see if all members are contributing. One person doing all the work results in point deductions for the entire team, plus peer evaluation adjustments of up to plus or minus 20%.

Team Collaboration Guide

This is the most important section of this guide. Technical skills get the website built, but collaboration skills determine whether the team succeeds or falls apart.

Communication Best Practices

  • Set up a dedicated channel – a Discord server or Slack workspace specifically for this project. Keep project discussion separate from personal chats
  • Agree on response time expectations – for example, everyone responds within 24 hours. Set this expectation in your first meeting
  • Use async communication for updates, sync (meetings) for decisions – post progress updates in chat anytime; save complex decisions for live meetings
  • Post regular standups – every day or every other day, each person posts a brief update: “What I finished, what I am working on next, any blockers”
The number one reason teams struggle is poor communication. Over-communicate. If you are stuck, say something. If you are behind, say something. Silence is the enemy.

GitHub Workflow for Teams

This is the workflow your team should follow for every piece of work. It prevents conflicts, enables code review, and creates a clear history of who built what.

Clone the Repository

Every team member clones the shared repository to their own computer:

git clone https://github.com/your-team/group-project-1.git
cd group-project-1

Create a Feature Branch

Never work directly on main. Every task gets its own branch with a descriptive name:

git checkout -b feature/homepage
# or
git checkout -b feature/contact-form
# or
git checkout -b fix/mobile-nav

Use prefixes like feature/ for new work and fix/ for bug fixes. The name after the slash should describe what you are building.

Work on Your Branch

Make regular commits with meaningful messages as you work. Do not wait until everything is done to commit:

git add index.html css/styles.css
git commit -m "Add hero section HTML structure and basic styling"

# Continue working...
git add css/styles.css
git commit -m "Add responsive navigation with Flexbox"

# Continue working...
git add js/main.js
git commit -m "Add mobile hamburger menu toggle"

Push Your Branch and Create a Pull Request

When your feature is ready for review, push it to GitHub:

git push origin feature/homepage

Then go to your repository on GitHub. You will see a banner that says “Compare & pull request.” Click it. Write a description of what you built, what it looks like, and anything reviewers should check.

Request Review from a Teammate

In the pull request, click “Reviewers” on the right sidebar and select a team member. They will get a notification to review your code.

After Approval, Merge to Main

Once your teammate approves the pull request, click “Merge pull request” on GitHub. Then click “Delete branch” to keep things clean.

Pull the Latest Main Before Starting New Work

Before starting your next task, always get the latest version of main:

git checkout main
git pull origin main
git checkout -b feature/next-task

This ensures you are building on top of the team’s latest work, not an outdated version.

Never push directly to main. Always use feature branches and pull requests. This prevents conflicts and ensures code review happens.

Avoiding Merge Conflicts

Merge conflicts happen when two people edit the same lines in the same file. They are not catastrophic, but they are annoying. Here is how to minimize them:

  • Pull from main often – at least daily when you are actively working:
git checkout main
git pull origin main
git checkout your-branch
git merge main
  • Communicate about which files you are editing – post in your group chat: “I am working on styles.css today, specifically the hero section”
  • Do not work on the same file at the same time – coordinate who edits what
  • If a conflict happens, resolve it together on a call – screen share so both people understand what gets kept
  • Consider splitting CSS into separate files – for example, nav.css, hero.css, footer.css that are all linked from each HTML page. This reduces the chance of two people editing the same CSS file

Code Review Etiquette

When reviewing a teammate’s pull request:

  • Be constructive, not critical: “Have you considered using Flexbox here? It might simplify this layout” – not “This code is wrong”
  • Focus on the code, not the person: “This section could use more spacing” – not “You did not add enough spacing”
  • Suggest improvements, do not just point out problems: If something could be better, explain how
  • Approve promptly – do not let pull requests sit for days. Aim to review within 24 hours
  • Leave comments on specific lines – GitHub lets you comment on individual lines of code in a PR, which is much clearer than general feedback

Meeting Structure

Keep meetings short and focused. Use this simple standup format (5-10 minutes):

  1. Each person: What did you finish since last time?
  2. Each person: What are you working on next?
  3. Any blockers or issues?
  4. Quick decisions needed?
Keep meetings short and focused. If a discussion goes long, schedule a separate meeting for that topic. Respect everyone’s time.

Handling Team Issues

IssueSolution
Member not respondingTry all contact methods. Contact me after 48 hours of silence
Unequal contributionDiscuss with the team first. Document the situation for your peer evaluation. Talk to me if unresolved
Merge conflictsPair up on a call and resolve together. Pull from main more frequently going forward
Disagreements on designVote as a team (majority wins). If deadlocked, ask me to mediate
Behind scheduleReprioritize immediately. Cut non-essential features. Focus on meeting core requirements first

Weekly Milestones

These milestones keep your team on track across the six-week project timeline. Falling behind by more than one week puts the entire project at risk.

Week 3: Planning and Setup

  • Finalize your project option and team roles
  • Create your sitemap (which pages exist and how they connect)
  • Set up the GitHub repository with all collaborators
  • Create the HTML skeleton for all 5+ pages (empty structure with shared navigation)
  • Each member makes at least one commit to verify the workflow works

Week 4: HTML Structure

  • All 5+ pages contain real, meaningful content (not placeholder text)
  • Shared navigation is identical across every page and links work correctly
  • Semantic HTML elements used consistently (<header>, <nav>, <main>, <section>, <footer>)
  • Forms include appropriate input types and labels
  • Validate HTML with the W3C Validator

Week 5: CSS Layout and Design System

  • Define your design system: color palette (3-5 colors), fonts (1-2), spacing scale
  • Apply consistent styling across all pages
  • Implement Flexbox and/or Grid for page layouts
  • Team Health Check: each member should have multiple commits and at least one merged pull request by now

Week 6: Responsive Design

  • Implement mobile-first CSS with media queries
  • Test at three widths: 375px (phone), 768px (tablet), 1024px (desktop)
  • Ensure no horizontal scrolling at any width
  • Navigation works on all screen sizes
  • Images scale properly

Week 7: JavaScript Features

  • Implement at least 3 interactive features across the site
  • Test each feature independently in the browser console
  • Ensure JavaScript does not break on pages where a feature is not present
  • Add hover effects and CSS transitions where appropriate

Week 8: Polish and Submit

  • Final cross-browser and cross-device testing
  • Deploy to GitHub Pages (or Netlify/Vercel)
  • Write the README with all required information
  • Prepare and deliver your team presentation
  • Submit to D2L with PR links
  • Complete peer evaluations within 3 days of the deadline
These milestones exist for a reason. If your team is behind by more than one week, talk to me immediately. Early intervention is always better than last-minute panic.

Technical Guidance by Area

HTML Approach

  • Start with a sitemap: draw which pages exist and how they connect. A simple sketch on paper or a shared whiteboard is enough
  • Create the shared navigation first – it must be identical on every page. Get this right early so every team member can copy the same <nav> element
  • Use semantic elements consistently across all pages: <header>, <nav>, <main>, <section>, <article>, <footer>
  • Maintain proper heading hierarchy: one <h1> per page, followed by <h2>, <h3>, etc. in order
  • Validate with the W3C Validator after each page is complete. Fix errors immediately – they compound if ignored

CSS Approach

Design System First – the recommended approach.

Start by defining your consistent values before styling any pages:

  • Color palette: choose 3-5 colors (primary, secondary, accent, background, text)
  • Fonts: select 1-2 fonts from Google Fonts (one for headings, one for body text, or one for everything)
  • Spacing scale: use consistent values based on rem (e.g., 0.5rem, 1rem, 1.5rem, 2rem, 3rem)

Create CSS custom properties (variables) or a set of consistent class names that everyone on the team uses. Then apply these across all pages.

This approach ensures visual consistency from the start. When every page uses the same colors, fonts, and spacing, the site feels professional and cohesive.

Page-by-Page – faster to start, more refactoring later.

Style one page completely, then replicate the same visual patterns on other pages. This feels faster at first because you see immediate results.

The downside: each team member may style their pages slightly differently, leading to inconsistency. You will spend time refactoring later to make everything match.

If you choose this approach, designate one person (the CSS Lead) to do a consistency pass across all pages before submission.

JavaScript Feature Ideas

You need at least 3 interactive features across the site. Here are ideas to consider, described conceptually. The implementation is up to you and your team.

  1. Mobile hamburger menu – a button that shows and hides the navigation links on small screens. Essential for responsive sites
  2. Form validation – check that required fields are filled in, email addresses are formatted correctly, and show helpful error messages before the form submits
  3. Image carousel or slider – cycle through a series of images with previous and next buttons. Common on homepages and gallery pages
  4. Accordion or FAQ section – collapsible content sections where clicking a question reveals the answer. Keeps long content organized
  5. Content filter or search – filter a list of items (products, team members, resources) by category using buttons or a search field
  6. Modal or popup – an overlay with content that appears when the user clicks a button or link. Closes when clicking outside or pressing a close button
  7. Smooth scroll – clicking a navigation link scrolls smoothly to the corresponding section on the page instead of jumping instantly
  8. Scroll animations – elements fade in, slide in, or otherwise animate as the user scrolls down the page
  9. Theme switcher – a toggle that switches between light and dark mode, changing background and text colors across the entire site
  10. Back to top button – a button that appears when the user scrolls down and smoothly scrolls back to the top of the page when clicked
You need at least 3 JavaScript features. Start with the easiest one (like smooth scroll or a back-to-top button) to build confidence, then tackle more complex ones like form validation or a carousel.

Project Structure

    • index.html
    • about.html
    • services.html
    • contact.html
    • gallery.html
      • styles.css
      • main.js
      • (your images here)
    • README.md
  • Page names will vary depending on your chosen project option. The structure above is an example for a Business/Company website. Adjust the HTML file names to match your sitemap.

    Presentation Guide

    Your team will present the project live to me – either during a scheduled meeting or during a Thursday class session before March 22. Every team member must participate.

    Each Member Presents Their Own Contributions (3-5 minutes per person)

    Talk about what you personally built. Which pages did you work on? Which features did you implement? Walk through the specific HTML, CSS, or JavaScript you wrote.

    Show Your Code and Explain Your Decisions

    Open VS Code and walk through the code you are most proud of. Explain why you made the choices you made – why that HTML structure, why that CSS technique, why that JavaScript approach.

    Demo the Live Site Together

    As a team, walk through the deployed website. Show it working at different screen sizes. Demonstrate all JavaScript features. Click through all pages and show the navigation.

    Be Prepared for Questions About Your Code

    I may ask follow-up questions: “Why did you use Grid here instead of Flexbox?” or “How does this JavaScript feature work?” You must be able to explain any code you submitted.

    All Cameras On During the Presentation

    Every team member must have their camera on for the entire presentation. This is a required part of the grading criteria.


    Peer Evaluation

    After submission, each team member completes a confidential peer evaluation:

    • Due within 3 days of the project deadline
    • Confidential – I see them, your teammates do not
    • Rate each team member on contribution level, communication quality, and work quality (1-5 scale)
    • Describe each member’s contributions in your own words
    • Self-assessment of your own contribution
    • Adjusts individual grades by up to plus or minus 20%
    Be honest in peer evaluations. They ensure fair grading when contribution is unequal. If one team member carried the project, the peer evaluations are how I find out and adjust grades accordingly.

    Deployment Guide

    Your project must be deployed to a live URL. Choose one of these options:

    GitHub Pages – the simplest option for static HTML/CSS/JS sites.

    1. Go to your repository on GitHub
    2. Click Settings > Pages (in the left sidebar)
    3. Under “Source,” select Deploy from a branch
    4. Choose the main branch and / (root) folder
    5. Click Save
    6. Wait 1-2 minutes, then refresh the page. Your live URL will appear at the top

    Your site will be available at https://your-username.github.io/group-project-1/. Every time you merge to main, the site updates automatically.

    Make sure your main page is named index.html – GitHub Pages looks for this file by default.

    Netlify – offers automatic deployments and custom domains.

    1. Create a free account at netlify.com
    2. Click Add new site > Import an existing project
    3. Connect your GitHub account and select your repository
    4. Configure the build settings (for a static site, leave them at defaults)
    5. Click Deploy site

    Netlify will give you a random URL like random-name.netlify.app. You can customize the subdomain in your site settings. The site redeploys automatically when you push to main.

    Vercel – another popular deployment platform with fast global hosting.

    1. Create a free account at vercel.com
    2. Click Add New > Project
    3. Connect your GitHub account and import your repository
    4. Leave the default settings (Vercel auto-detects static sites)
    5. Click Deploy

    Vercel provides a URL like project-name.vercel.app. Like Netlify, it redeploys automatically when you push to main.


    Submission Checklist

    Before submitting, verify every item:

    • 5+ HTML pages with semantic elements (<header>, <nav>, <main>, <section>, <footer>)
    • Consistent, working navigation across all pages
    • External CSS stylesheet(s), fully responsive (mobile-first with min-width media queries)
    • Flexbox and/or CSS Grid used for layouts
    • Consistent design system (colors, fonts, spacing applied across all pages)
    • 3+ JavaScript interactive features working correctly
    • No CSS frameworks (no Bootstrap, Tailwind, etc.)
    • All team members have visible Git contributions (commits and pull requests)
    • Feature branches and pull requests used (not direct pushes to main)
    • Deployed to GitHub Pages, Netlify, or Vercel with a working live URL
    • README includes: project name, team members and roles, live URL, screenshots, tech stack, setup instructions, feature list
    • HTML passes the W3C Validator with no errors
    • Each member has PR links ready for their individual D2L submission
    • Presentation completed (all members participated, cameras on)
    • Peer evaluations submitted within 3 days of the deadline

    Troubleshooting & Common Mistakes

    We are having constant merge conflicts

    Pull from main more often – ideally every time before you start working:

    git checkout main
    git pull origin main
    git checkout your-branch
    git merge main

    Communicate in your group chat about which files each person is editing. If two people need to edit styles.css, consider splitting it into page-specific CSS files (e.g., homepage.css, about.css, contact.css) and linking each from the relevant HTML page.

    One team member is not contributing
    Talk to them directly first – they may be struggling or dealing with something outside of class. If there is no response after 48 hours, contact me. Document the situation for your peer evaluation. Do not wait until the last week to raise this issue.
    Our design looks inconsistent across pages
    Create a design system first: define your colors, fonts, and spacing values in one place (CSS custom properties work well for this). Use the same CSS class names across all pages. Have the CSS Lead do a consistency pass across every page before submission.
    The navigation does not work on all pages
    Check that file paths in your links are correct. If index.html links to about.html, make sure about.html exists at the same directory level. Use relative paths (e.g., href="about.html" not href="/about.html"). Test every link on every page.
    Our JavaScript features are buggy
    Test each feature independently. Use console.log() statements to track what your code is doing. Open the browser console (F12 > Console tab) and look for error messages – they tell you exactly which line has the problem. If a feature works on one page but not another, check that the JavaScript file is linked on all pages and that the HTML elements the script targets actually exist on that page.
    We are behind on the milestone schedule
    Reprioritize immediately. Identify the core requirements (5 pages, responsive CSS, 3 JS features) and focus only on those. Cut nice-to-have features like animations or extra pages. Talk to me – I can help you prioritize and may offer guidance on where to focus.
    Our GitHub Pages deployment shows a 404

    Check these common causes:

    1. Your main page must be named index.html (not home.html or main.html)
    2. Verify that GitHub Pages is configured to deploy from the correct branch (usually main) in Settings > Pages
    3. Make sure your latest code is actually merged to main – check the main branch on GitHub to confirm
    4. Wait 1-2 minutes after pushing; deployments are not instant
    5. Clear your browser cache and try again (Ctrl+Shift+R or Cmd+Shift+R)
    Git says ‘fatal: not a git repository’

    You are in the wrong directory. Make sure you are inside the cloned project folder:

    cd group-project-1
    git status

    If you never cloned the repository, start with git clone using the repository URL from GitHub.

    I accidentally committed to main instead of a branch

    If you have not pushed yet, you can move your commit to a new branch:

    git branch feature/my-work
    git reset --soft HEAD~1
    git checkout feature/my-work
    git add .
    git commit -m "Your commit message"

    If you already pushed to main, talk to your team. The Project Lead can help sort it out. Going forward, always check which branch you are on with git status before committing.


    Key Takeaways

    🎯
    • Communication is the most important team skill – over-communicate, never go silent, post regular updates
    • Always use feature branches and pull requests – never push directly to main
    • Pull from main frequently to avoid merge conflicts: git pull origin main
    • Start with a design system (colors, fonts, spacing) so every page looks consistent
    • Build HTML structure first, CSS second, JavaScript last – this order reduces rework
    • Test at 375px, 768px, and 1024px for responsive design at all screen sizes
    • All team members must have visible Git contributions – commits, branches, and pull requests
    • Peer evaluations adjust individual grades by up to plus or minus 20% – be honest and fair
    • Talk to me early if your team is struggling – do not wait until the deadline

    Additional Resources

    Git & GitHub

    Web Development

    Team Collaboration