⌂ Astra Home← A to Z Practice LessonsBatch 17

Batch 18 — Complete Responsive Website Project

One practical project taught from client brief to testing and handover. Every point explains the concept, what to do, expected output, and common failure.

Starting → Intermediate → Advanced → Professional

భాష / Language / भाषा

English: Full detailed steps and runnable source code. తెలుగు: ప్రతి దశకు తెలుగు సారాంశం. हिन्दी: हर चरण का हिन्दी सारांश. Full translations of all steps are not yet available.

Prerequisites: A modern browser and any plain-text code editor. No paid service, backend, account or API key is required for the local demo.

Open live project preview Download complete HTML project

Point 01 — Define a real client brief

Theory & why: A website needs a measurable goal, a specific audience, and a clear action. Avoid coding before deciding what success means.

Step-by-step practical: Write a brief for a local digital-services business: audience = small businesses; goal = inquiries; CTA = Request a quote. Record three services and contact information.

Expected output: A one-page brief containing audience, goal, CTA, three services and contact details.

Common error / fix: Missing CTA? Add one clear action to the hero and contact section.

Practice: Repeat the step independently, capture the result, and explain what changed and why.

Point 02 — Create a content hierarchy

Theory & why: Information architecture organizes content by user intent rather than by developer convenience.

Step-by-step practical: Arrange sections as header, hero, services, process, FAQ, contact, footer. Draft one useful sentence per section.

Expected output: A readable outline that a visitor can scan in under one minute.

Common error / fix: Too many sections? Remove repeats; retain one primary CTA.

Practice: Repeat the step independently, capture the result, and explain what changed and why.

Point 03 — Build semantic HTML

Theory & why: Semantic elements describe purpose to browsers, assistive technology, and search engines.

Step-by-step practical: Create index.html with header, nav, main, section, form and footer. Use one h1 and meaningful h2 headings.

Expected output: A page that displays even when CSS is disabled.

Common error / fix: If layout disappears without CSS, content must still remain readable.

Practice: Repeat the step independently, capture the result, and explain what changed and why.

Point 04 — Add accessible navigation

Theory & why: A link changes location; a button performs an action. Navigation should work by keyboard.

Step-by-step practical: Use anchor links to #services and #contact, include visible link text, and a skip-to-content link. Tab through controls.

Expected output: Tab reaches navigation and skips to main content.

Common error / fix: If links fail, verify each href fragment matches an element id.

Practice: Repeat the step independently, capture the result, and explain what changed and why.

Point 05 — Write a clear hero section

Theory & why: A hero explains value and next action immediately. Avoid vague claims and decorative filler.

Step-by-step practical: Use an h1 describing the service, one sentence explaining the benefit, and a contact anchor CTA.

Expected output: The first screen communicates who the service is for and what to do.

Common error / fix: If CTA blends in, check contrast and whitespace.

Practice: Repeat the step independently, capture the result, and explain what changed and why.

Point 06 — Create reusable service cards

Theory & why: Repeated visual patterns should share CSS classes to avoid inconsistent layouts.

Step-by-step practical: Write three article cards with service title, a concrete outcome, and one short explanation.

Expected output: Three equally styled cards visible on desktop and stacked on mobile.

Common error / fix: If cards overflow, inspect min-width and grid settings.

Practice: Repeat the step independently, capture the result, and explain what changed and why.

Point 07 — Set up design tokens

Theory & why: CSS custom properties make color, spacing and radius changes consistent.

Step-by-step practical: Define --ink, --brand, --paper and --border in :root. Reuse them across buttons and cards.

Expected output: Changing one token updates every component using it.

Common error / fix: If a color does not change, look for a hard-coded override.

Practice: Repeat the step independently, capture the result, and explain what changed and why.

Point 08 — Build responsive layout

Theory & why: Responsive design adapts to available width, not to a single phone model.

Step-by-step practical: Use grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr)) and a max-width container.

Expected output: Cards form columns on wide screens and stack on narrow screens.

Common error / fix: Horizontal scrolling? Inspect fixed widths and oversized images.

Practice: Repeat the step independently, capture the result, and explain what changed and why.

Point 09 — Improve typography and contrast

Theory & why: Readable text depends on font size, line length, spacing and contrast.

Step-by-step practical: Set body line-height to 1.6; use clamp for headings; add visible focus outlines. Test at 200% zoom.

Expected output: Text remains legible without overlapping controls.

Common error / fix: If zoom clips text, avoid fixed heights on content containers.

Practice: Repeat the step independently, capture the result, and explain what changed and why.

Point 10 — Create a validated contact form

Theory & why: Client-side validation improves feedback but does not replace server validation. This demo does not send data.

Step-by-step practical: Add name, email and message fields with labels, required attributes and type=email. Add a submit handler that validates and displays a demo confirmation.

Expected output: Valid input shows a demo confirmation; empty/invalid input is blocked.

Common error / fix: If a real message is expected, connect a consent-aware backend; never claim the demo sends email.

Practice: Repeat the step independently, capture the result, and explain what changed and why.

Point 11 — Add accessible feedback

Theory & why: Dynamic status messages should be announced and should not hide errors.

Step-by-step practical: Give the feedback element role=status and aria-live=polite. After submit, show the demo-only confirmation.

Expected output: Screen readers can announce the confirmation.

Common error / fix: If status is silent, confirm the live region exists before updates.

Practice: Repeat the step independently, capture the result, and explain what changed and why.

Point 12 — Test with keyboard and mobile

Theory & why: A visual preview alone cannot prove accessibility or usability.

Step-by-step practical: Test Tab, Shift+Tab, Enter, 320px width, 768px width, 1440px width and 200% zoom. Record pass/fail.

Expected output: A small test report with screenshots and any defects.

Common error / fix: If the mobile menu is unreachable, fix focus order and click targets.

Practice: Repeat the step independently, capture the result, and explain what changed and why.

Point 13 — Inspect browser developer tools

Theory & why: The Console reveals runtime errors; Network shows failed resources; Elements shows layout rules.

Step-by-step practical: Open browser DevTools. Inspect Console, Network and responsive mode. Deliberately change a local asset path and observe the error, then restore it.

Expected output: No uncaught JS errors or missing local assets after restoration.

Common error / fix: 404 indicates incorrect file path or deployment structure.

Practice: Repeat the step independently, capture the result, and explain what changed and why.

Point 14 — Check basic SEO and performance

Theory & why: Search visibility starts with useful content, metadata, accessible structure and fast loading.

Step-by-step practical: Add a unique title, meta description, descriptive headings, and avoid unnecessary libraries. Inspect image sizes before publishing.

Expected output: Meaningful title and description appear in document head; page loads without external dependencies.

Common error / fix: Do not promise ranking; search engines decide indexing and position.

Practice: Repeat the step independently, capture the result, and explain what changed and why.

Point 15 — Publish and hand over safely

Theory & why: A production handover includes tests, backups, domain settings and client acceptance.

Step-by-step practical: Deploy files to a test HTTPS URL, verify navigation and form behavior, capture acceptance evidence, then document what is demo-only.

Expected output: A handover checklist and tested deployment URL.

Common error / fix: Never publish API keys or credentials inside HTML/JS; use server-side secrets.

Practice: Repeat the step independently, capture the result, and explain what changed and why.

Working project preview

Test navigation, responsive cards, keyboard access and the demo-only contact form. The form intentionally does not send any message.

Complete working source

The downloadable single HTML file contains semantic markup, responsive CSS, and a form validation script. Open it in a browser and modify the content. This is a runnable demo, not a production contact backend.

Download project code

Independent capstone

  1. Replace the three service cards with your own legitimate digital services.
  2. Translate visible page text into Telugu or Hindi while preserving field labels and validation.
  3. Add a fourth card without breaking the mobile layout.
  4. Check navigation at 320px and 200% zoom.
  5. Write a test report with at least eight cases and actual pass/fail evidence.
  6. Explain how you would connect the form to a secure server endpoint without exposing credentials.

Knowledge check

Why does the form not send emails?

It is a local demo with client-side validation only. Sending email requires an authenticated backend or a reputable form service and proper privacy handling.

Why use semantic HTML and visible focus styles?

They help navigation, accessibility, structure and maintainability; they do not by themselves guarantee compliance.

Why test 320px width and 200% zoom?

To catch overflow, unreadable text and controls that are inaccessible on small screens or at high magnification.

← Back to A to Z Practice Lessons