Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .DS_Store
Binary file not shown.
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"liveServer.settings.port": 5501
}
162 changes: 161 additions & 1 deletion README.md
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Super organized sections, thumbs up. Very clear and specified overview. I especially like you have mentioned all the requirments for each week. Loud and clear.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @irisdgz good stuff. Appreciated your time to review my project!

Original file line number Diff line number Diff line change
@@ -1 +1,161 @@
# js-project-business-site
# Stockholm Apartment Landing Page

Hey! This is my apartment website - a place in Stockholm that I rent out and might sell to the right person.

## What's this about?

So I'm doing this Technigo JavaScript project (week 1 of 3), and instead of making another generic business site, I decided to build something real - a landing page for my actual apartment in Kungsholmen.

Started sketching ideas with paper and pen (old school, I know). First thought about doing a recipe app I'd been working on (droo.ly - did some AI prototyping a few months back), but then switched to this apartment idea since I actually need it. I rent the place out on Airbnb/Qasa when I'm not there, and hey, might sell it if the right offer comes along!

## The vibe I'm going for

Trying to capture that minimal Swedish aesthetic mixed with Apple's clean style. You know - lots of white space, clean fonts, everything breathing. Like those fancy magazines but for an apartment. Still figuring out the perfect layout but getting there!

## What I built with

- Plain HTML & CSS (keeping it simple for now)
- Lucide icons (great icon library btw)
- SF Pro font stack (that clean Apple system font look)
- CSS Grid & Flexbox for layouts
- CSS Custom Properties (variables) for maintainable styling
- Folder layout system for sticky positioning
- JavaScript for mobile navigation (no more CSS checkbox hacks!)
- Pixel-based sizing for precise control
- Some cool CSS animations (reviews auto-scroll, carousel moves)

## How it looks on different screens

**Small phones (iPhone SE etc)**: Everything stacks in one column, smaller titles so nothing breaks

**Tablets**: 2 columns where it makes sense, better use of that iPad screen

**Desktop**: Full magazine layout with 4 columns in places, everything spreads out nicely

**Big screens**: Even more breathing room

## What's in there

Started by gathering all the good stuff - photos of every corner, guest reviews (got some really nice ones!), local restaurant tips. The page has:

- Big hero section with availability
- Quick facts about the place (wifi speed, location, all that)
- Reviews from past guests (they rotate automatically, pretty neat)
- Full kitchen tour (I love that kitchen)
- Workspace setup (perfect for remote work)
- The patio area (summer BBQs!)
- Local recommendations (my favorite Stockholm spots)
- Bathroom (renovated 2017, still looks fresh)
- The neighborhood vibe
- Booking options (email, Airbnb, or buy it!)
- **NEW: Inquiry form** (Week 3 addition) - Contact form with validation

## Project requirements ✅

**Week 1-2 requirements:**
- Responsive from 320px to 1600px ✓
- Navigation that works on mobile & desktop ✓
- CSS Grid used ✓
- Flexbox too ✓
- Different column layouts for different screens ✓

**Week 3 requirements (Forms & Clean Code):**
- Hero image/video header ✓
- Signup form with 3+ different input types ✓
- Text fields (name, visit dates) ✓
- Email field ✓
- Radio buttons (guest count) ✓
- Checkboxes (interests) ✓
- Textarea (message) ✓
- Submit button ✓
- Form posts to `https://httpbin.org/anything` ✓
- Fully responsive form ✓
- Clean code practices applied ✓

## Week 3 Progress ✅

**Completed tasks for HTML Forms & Clean Code:**

- **Added Inquiry Form Section**: A complete contact form with 3+ input types (text, email, textarea, radio buttons, checkboxes)
- **Form Validation Ready**: Form posts to `https://httpbin.org/anything` for testing
- **Mobile Spacing Optimization**: Reduced excessive vertical gaps on mobile for better UX
- **CSS Cleanup**: Applied DRY principles, consolidated similar styles, removed redundant code
- **Semantic HTML**: Added meaningful comments throughout for better code readability
- **Responsive Form**: Fully responsive form that looks great 320px-1600px+
- **Clean Code Practices**: Following best practices from research on modern form validation

## If you want to run it

Super simple:

1. Clone/download the files
2. Open index.html in your browser
3. That's it - no build tools or npm or anything

## Notes to self

The Apple style update really made a difference - those subtle grays (#86868b for muted text) and the cleaner font weights. Also that blue (#000000) for the main button pops nicely.

Had some fun with the CSS - that review slider took forever to get right (4 seconds per review, 6 reviews total). The carousel is infinite scroll which is pretty satisfying.

## Recent Improvements

**Code Architecture:**
- Implemented CSS custom properties (variables) for maintainable styling
- Created folder layout system with toggle functionality
- Refactored mobile navigation to use JavaScript instead of CSS checkbox hacks
- Organized CSS with clear variable system for colors, spacing, and transitions

**Navigation & UX:**
- Updated navigation links to match actual page sections
- Added folder layout toggle button in header
- Improved mobile navigation with proper JavaScript event handling
- Fixed all broken internal links and navigation flow

**Technical Improvements:**
- Cleaned up CSS variables and removed unused properties
- Improved code organization and readability
- Enhanced mobile responsiveness
- Better semantic HTML structure with proper section linking

**Clean Code Practices:**
- Meaningful CSS class names (`.inquiry-form`, `.form-group`)
- Consistent naming conventions (kebab-case)
- Removed redundant styles
- Clear section organization
- Semantic HTML structure

## Major Refactoring (Latest Update)

**CSS Variables System:**
- Added comprehensive CSS custom properties for colors, spacing, typography, z-index, and transitions
- Centralized all design tokens in `:root` for easy maintenance
- Consistent color palette: `--color-primary`, `--color-secondary`, `--color-muted`, etc.
- Standardized spacing scale: `--spacing-xs` through `--spacing-xxxl`
- Unified border radius system: `--radius-sm` through `--radius-full`

**Folder Layout System:**
- Created `.folder` class for all sticky positioned sections
- Each section gets unique top positioning: `.folder#about { top: 110px; }`
- Eliminated repetitive sticky positioning code
- Easy to toggle folder layout on/off with a single class
- Clean separation of layout concerns

**JavaScript Navigation:**
- Replaced CSS checkbox hack with proper JavaScript toggle
- Added `burger-toggle` button with click event listener
- Mobile nav now uses `.active` class for show/hide
- Auto-closes navigation when clicking links
- More accessible and maintainable approach

**Code Quality Improvements:**
- Removed empty CSS rulesets
- Consolidated similar styles using variables
- Better semantic HTML structure
- Cleaner separation of concerns
- More maintainable codebase

---

Built in Lund with lots of coffee ☕
Updated September 2025 with folder layout system and code refactoring
Binary file added images/.DS_Store
Binary file not shown.
Binary file added images/Group 1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/bed-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/bed-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/bg.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/entrance.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/hero.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/kitchen-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/kitchen-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/office-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/office-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/office-3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/patio-0.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/patio-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/patio-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/patio-3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/patio-4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/patio-5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/profile.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/street.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/toilet-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/toilet-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading