-
Notifications
You must be signed in to change notification settings - Fork 76
Closed
Labels
Description
📘 Issue Description
Design and develop the new homepage the StellarRent (apps/web/src/app/page.tsx), replacing the current placeholder. This hero page should be visually appealing, functional, and aligned with the MVP goals, allowing users to easily explore properties, understand how the platform works, and drive engagement.
🎯 Objectives
- Build a striking Hero Section with a clear value proposition.
- Implement an advanced search bar (location, dates, guests) with autocomplete.
- Display a featured properties grid (with lazy loading if possible).
- Add informative sections: How It Works and Testimonials.
- Include a footer with key navigation links.
🔍 Technical Steps
-
Hero Section
- Create
HeroSection.tsxincomponents/layout/orcomponents/shared/ - Message: “Rent properties instantly with cryptocurrency”
- Background: gradient (
from-blue-900 to-white) with subtletw-animate-csstransitions - CTA Buttons: "Explore Properties" and "List My Property"
- Fully responsive and mobile-first design
- Create
-
Search Bar
- Create
SearchBar.tsxincomponents/features/search/ - Fields:
- Location (autocomplete)
- Check-in/out dates (using
shadcn/uiDatePicker) - Guests count (
shadcn/uiSelect/Input)
- Validation with
zod - Manage search query state globally or locally
- Create
-
Featured Properties Grid
- Create
FeaturedProperties.tsxincomponents/features/properties/ - Display 6-8 mock properties with:
- Image, title, price in USDC, location, star rating
- "View Details" button linking to
/property/[id]
- Lazy load items using
React.SuspenseorIntersectionObserver - Use
Lucide-reactfor icons andclsxfor conditional classes
- Create
-
How It Works Section
- Create
HowItWorks.tsxincomponents/shared/ - 3 clear steps: Explore → Book → Pay with crypto
- Grid layout with icons and concise copy
- Create
-
Testimonials Section
- Create
Testimonials.tsxincomponents/shared/ - 2–3 real or dummy testimonials with name, avatar, and feedback
- Optional: auto-animated slider
- Create
-
Footer
- Create
Footer.tsxincomponents/layout/orshared/ - Links: “How It Works”, “FAQs”, “Contact”, and social media
- Create
-
Integration
- Replace content in
app/page.tsxwith the new layout - Use proper modular composition
- Unified styling with Tailwind,
shadcn/ui, and dark/light mode vianext-themes
- Replace content in
✅ Acceptance Criteria
Functionality
- Hero is rendered properly with working CTAs
- Search bar works and validates input
- Featured properties are displayed dynamically
- Informational sections are present and visually distinct
- Footer navigation is functional
Security
- All input fields validated via
zod - No unsafe rendering or direct injection of user input
- Safe autocomplete implementation
UX/UI
- Fully responsive layout
- Mobile-first design
- Smooth, subtle animations
- Clear visual hierarchy and consistent spacing
- Dark/Light Mode Support:
- Font: Quicksand used across all sections
- In light mode:
- Background:
#CFF0FF - Text color:
#182A47 - CTA buttons should contrast well with the background (e.g., deep blue or dark teal)
- Background:
- In dark mode:
- Background:
#0B1D39 - Text color:
#C2F2FF - Components (search bar, cards) must adapt using
dark:variants in Tailwind
- Background:
- Theme switching handled via
next-themes
Code Quality
- Logical component separation
- Strict typing via TypeScript
- Linting and code standards followed (ESLint)
- Clean, reusable component structure
🧪 Test Scenarios
- User lands on the homepage and sees the hero section on both mobile and desktop.
- User types a location and sees autocomplete suggestions.
- User clicks on a featured property and is redirected to the detail page.
- User reads and understands the 3-step flow in the "How It Works" section.
- User navigates using footer links.
- The layout works flawlessly on different screen sizes and devices.
🌎 References
- Airbnb for layout inspiration
- Shadcn UI Components
- Tailwind UI marketing sections
🔒 Security Requirements
- All form inputs must be validated via
zod - Never render untrusted strings directly
- Prevent XSS via autocomplete or mock data
🛠️ Technologies Used
- Next.js (
next) - TailwindCSS (
tailwindcss,@tailwindcss/postcss,tailwind-merge) - tw-animate-css
- Lucide-react
- Next-themes
- Zod
- @simplewebauthn/browser
- @stellar/stellar-sdk
- base64url, bigint-conversion, cbor-x
- clsx, class-variance-authority
- TypeScript
- ESLint
- shadcn/ui
I’ve attached an example of the expected appearance, followed by a visual guide. This document is not purely textual, suggestions for design improvements and creative input are encouraged and appreciated.

Reactions are currently unavailable