Intro + Problem + What DateSpark is
Have you ever spent more time arguing about what to do on a date than actually going on the date?
That was the exact problem we wanted to solve with DateSpark.
DateSpark is a simple multi-page website for couples that helps make date planning feel easier and more organized. Instead of endless “what should we do?” messages, the site guides you through a clean flow where you can explore date ideas, view them by category, and keep track of plans.
Because this was built as a beginner project, we kept the tech stack simple: HTML and CSS only (no JavaScript yet). That made the project more about structure, layout, responsiveness, and consistency across pages — and that’s where most of my learning came from.
Who it’s for: young couples (or even friends) who want quick, thoughtful date inspiration without stress.
What We Built (Pages & Flow)
One thing we were intentional about was building DateSpark as a multi-page website, not a single long page.
We structured the site into five main pages:
Home (index.html) – Introduction and landing page
Generate – Where users select preferences and get a date idea
Browse – A collection of date ideas organized visually
My Plans – A page showing saved or planned ideas
Login / Sign Up – Authentication layout pages
Even though we are still working with only HTML and CSS, we wanted the project to feel like a real product with proper navigation and flow.
The user journey looks like this:
Home → Generate → Browse → My Plans → Auth
Each page links properly using anchor tags, which helped us understand how multi-page websites connect together without frameworks.
Working with separate HTML files forced us to stay consistent with:
- Navbar structure
- Class names
- Layout containers
- Spacing
If something was slightly different in one file, the design would immediately break.
My Main Focus in the Project
Although we both worked across different parts of the project, I found myself spending most of my time on:
Structuring page layouts
Implementing Grid and Flexbox
Making pages responsive
Debugging CSS issues
Making sure styles remained consistent across files
What surprised me most was how much time layout structuring actually takes.
Designs may look simple, but translating them into properly nested HTML containers requires careful thinking:
Which elements should be wrapped inside a <section>?
When should something be a <div> vs an <article>?
Should this layout use Grid or Flexbox?
How will this behave on mobile?
Those questions shaped most of my contribution.
Building the Generate Page (Prototype Logic with HTML & CSS)
The Generate page is one of the most important parts of DateSpark because it represents the main idea of the project.
Right now, since we are working with only HTML and CSS, the “generation” feature is a structured prototype. Users can:
- Select options from dropdown menus
- Click a generate button
- View a pre-designed result section
Although the result is static for now, building the layout required careful structuring.
We had to design:
- The form layout
- The spacing between selects
- The result card section
- Proper alignment between text and image
- Responsive stacking for mobile
Even without JavaScript, we wanted the page to feel real and complete.

Layout Decisions: Grid vs Flexbox
One of the biggest things I practiced in this project was deciding when to use Grid and when to use Flexbox.
- For larger sections like:
- Page layout containers
- Two-column sections
- Centering main content We used CSS Grid.
For smaller elements like:
- Navigation links
- Card buttons
- Tags inside cards
- Aligning items horizontally
We used Flexbox.
At first, I sometimes used Flexbox for everything. But I started noticing that Grid made certain layouts cleaner and more predictable.
Understanding the difference between the two helped improve the structure of our pages.
Responsiveness and the Hamburger Menu
Responsiveness was one of the more technical parts of our HTML and CSS work.
On smaller screens:
- Navigation links could not stay horizontal
- Cards needed to stack
- Spacing needed adjustment
- Font sizes needed slight changes
To solve the navigation issue, we built a hamburger menu using:
- A hidden checkbox
- A label styled as the toggle button
- CSS selectors to show/hide navigation
Before adding this, the navbar would overflow on mobile devices.
After implementing it, the layout became more usable and clean on smaller ooooscreens.
Working on responsiveness helped me understand how much planning mobile design requires.
CSS Debugging — The Real Learning Curve
The part I personally spent the most time on was debugging CSS.
Some common issues I encountered:
- A class name mismatch between HTML and CSS
- Styles applying on one page but not another
- Grid alignment shifting unexpectedly
- Flex items stretching differently than expected
- Margin and padding conflicts
Unlike JavaScript, CSS doesn’t give error messages.
If something is wrong, it simply doesn’t work.
I learned to rely heavily on:
- Inspect Element in the browser
- Checking computed styles
- Reviewing class names carefully
- Removing unnecessary nested containers
This project improved my patience and attention to detail more than anything else
Real Challenges I Faced
Replicating the Generate Select Design from Figma:
One of the hardest parts for me was trying to match the Generate page dropdowns to the Figma design.
Each option block had:
- A main label (e.g. Budget)
- A smaller subtext (e.g. Price Range)
- The dropdown arrow aligned to the far right
- Clean spacing and alignment
In theory, it looks simple.
In reality, aligning:
- The title
- The subtitle
- The element
- The arrow positioning
was frustrating.
Sometimes the arrow would shift.
Sometimes the spacing looked off.
Sometimes the text alignment didn’t match the design.
Since native elements have default browser styling, it made customization harder than expected.
It took several adjustments with:
- Flexbox alignment
- Padding tweaks
- Width adjustments
- Removing default styles
Before it looked close to the design.
That experience taught me that small UI details can take more effort than large layout sections.
What This Project Taught Me
Working on DateSpark helped me understand that:
- Layout precision matters more than I thought
- Replicating designs exactly is not always easy
- CSS debugging requires patience
- Small elements can affect large layouts
- Consistency across multiple HTML files is important
Before this project, I saw HTML and CSS as basic tools.
After building a multi-page responsive website, I now understand how much structure and planning they require.
What We Would Improve Next
If we continue developing DateSpark, the next steps would include:
Adding JavaScript to make the date generator fully dynamic
Improving the dropdown customization further
Refining spacing and responsiveness
Possibly integrating storage so plans can be saved
For now, as a pure HTML and CSS project, DateSpark represents our understanding of layout, structure, responsiveness, and collaborative development.
Contributors
This project was a team effort built with my fantastic partner.
Check out their GitHub here: https://github.com/devanike
Read their thoughts on building DateSpark in their case study here:https://dev.to/grace_olabode_3be546efe9b/building-datespark-a-date-planning-app-for-couples-2d46




Top comments (0)