β Production-grade Next.js 16 / React 19 frontend for a coffee marketplace.
π A real-world learning project with catalog browsing, authentication, cart, checkout, favorites, orders, reviews, responsive UI, client state, and test automation.
π Live Demo Β· π Getting Started Β· π Backend API Β· π’ Good First Issues Β· π¬ Community
Live application interface: iced-latte.uk
Iced Latte is not just a demo repository. The broader project ecosystem has been noticed by developers, contributors, mentors, tooling companies, and open-source communities.
| Recognition | Why it matters | Proof |
|---|---|---|
| 1. π₯ GitHub Trending May 22, 2024 |
The backend repository reached GitHub Trending and gained 85 stars in one day with 27 active contributors. | Archive |
| 2. π₯ KaiCode 2024 Finalist Developer festival selection |
Selected among 412 applications for a developer festival backed by Huawei. | KaiCode 2024 |
| 3. π οΈ JetBrains Open Source License Contributor tooling support |
JetBrains granted 8 All Products Pack licenses to support contributors. | JetBrains OSS |
| 4. π¨βπ» Recommended by a GitHub Star Community endorsement |
Publicly recommended as a strong Java project example, with contributors sharing their experience. | LinkedIn post |
β These milestones show that Iced Latte is a real collaborative engineering project, not a toy example.
Iced Latte Frontend is the customer-facing web application for the Iced Latte coffee marketplace. It connects to the Spring Boot backend and gives contributors practical experience with a real Next.js codebase, product flows, API integration, authentication, state management, responsive UI, and automated testing.
Iced Latte started in 2022 as a private pet project. It was later opened to the community to give junior engineers, students, and mentees practical experience in a real tech project with processes similar to those in actual tech teams. The project has since grown and earned recognition from the wider developer community.
β If this project helps you learn or inspires you, please give it a star β it means a lot to the community!
Iced Latte is split into three focused repositories so contributors can work on backend, frontend, or QA independently.
| Repository | What it contains | Best for | Stats |
|---|---|---|---|
| π§ Backend | Java 25, Spring Boot 4, PostgreSQL, Redis, MinIO, Stripe, OpenAPI | Backend engineers, Java learners, API contributors | |
| π¨ Frontend | Next.js, React, TypeScript, TailwindCSS, product UI, frontend tests | Frontend engineers, UI contributors, React learners | |
| π§ͺ QA | Test automation, quality workflows, end-to-end coverage | QA engineers, test automation learners, release-quality contributors |
β If this project helps you learn or inspires you, please give it a star β it helps more contributors discover the ecosystem.
π New here? Start with the Getting Started Guide.
It explains every step slowly: what to install, how to run the frontend, how to start the backend, how Docker fits in, and what to do when something fails.
β You need these installed first:
- Node.js 22.18+
- Docker Desktop
β‘ Already comfortable with the terminal? Use the short path:
git clone https://github.com/Sunagatov/Iced-Latte-Frontend.git
cd Iced-Latte-Frontend
cp .env.example .env.local
npm ci
npm run devπ The backend must be running for products, login, cart sync, checkout, and orders to work. The Getting Started Guide shows the recommended backend + frontend setup.
π Frontend: http://localhost:3000
π Backend API: http://localhost:8083/api/v1
π§ͺ Run the checks:
npm run lint
npm run tsc -- --noEmit
npm testπ Run E2E tests:
npm run test:e2eπ E2E tests require the app running on
http://localhost:3000.
| Category | Technologies |
|---|---|
| π» Core frontend | Next.js 16, React 19, TypeScript 5, Node.js 22.18+ |
| π¨ Styling & UI | TailwindCSS 4, React Icons, responsive layouts |
| π§ Routing & app shell | Next App Router, route handlers, layouts, providers |
| π‘ API integration | Axios, Axios Cache Interceptor, SWR |
| ποΈ State management | Zustand, custom session orchestration |
| π Forms & validation | React Hook Form, Yup |
| π Auth flows | Sign-in, sign-up, password reset, registration confirmation, token/session helpers |
| π§ͺ Testing & quality | Jest 30, React Testing Library, Playwright, ESLint 9, Prettier, SonarCloud |
| π’ Delivery | Docker, GitHub Actions, Vercel config |
- π Getting Started β local run modes, Docker setup, backend connection, environment variables, troubleshooting
- π Architecture: Feature Packaging β feature-first frontend structure: keep UI, state, hooks, and helpers close to the owning feature
- π Authentication β auth flows and frontend/backend auth behavior
- π E2E Test Plan β Playwright coverage plan and scenarios
- π Security Policy β security policy and vulnerability reporting
- π Code of Conduct β community standards and expected behavior
- π LICENSE β Apache License 2.0
src/
βββ app/ # Next App Router entries, route handlers, shell layout, providers
β βββ api/ # Next route handlers and proxy endpoints
β βββ layout/ # Header, footer, and app-shell UI
β βββ providers/ # App bootstrap and global runtime wiring
βββ features/ # Product/domain slices
β βββ addresses/ # Delivery address management
β βββ auth/ # Sign-in, sign-up, password reset, auth guards
β βββ cart/ # Shopping cart flows and state
β βββ checkout/ # Checkout flow
β βββ favorites/ # Favorites
β βββ home/ # Home page route and hero section
β βββ orders/ # Orders and order success
β βββ payment/ # Payment-facing frontend logic
β βββ products/ # Catalog and product details
β βββ reviews/ # Reviews and ratings
β βββ session/ # Session orchestration across auth/cart/favorites
β βββ user/ # Profile and user account flows
βββ shared/ # Cross-feature building blocks
β βββ api/ # Axios client
β βββ auth/ # Cookies, token helpers, session tracing
β βββ config/ # Feature flags, routes, constants
β βββ types/ # Shared TypeScript types
β βββ ui/ # Reusable UI primitives
β βββ utils/ # Generic utilities
βββ types/ # Global declaration files
Iced Latte is built in the open and welcomes contributors who want practical experience with a real Next.js/React codebase.
| I want to... | Start here |
|---|---|
| π’ Make my first contribution | Pick a good first issue and comment "I'm on it" |
| π Report a bug | Open an issue with clear observed vs expected behavior |
| π‘ Suggest a feature | Start a Discussion before implementation |
| π§ Make a larger change | Comment on the issue first so hidden constraints can be clarified |
Before opening a PR:
- π― Keep the change focused on one concern
- β
Run
npm run lint,npm run tsc -- --noEmit, andnpm test - π Reference the related issue
- π Read the full Contributing Guide
β οΈ By contributing, you agree to the project license and contribution terms described in LICENSE.
Iced Latte is licensed under the Apache License 2.0. See LICENSE for details.
The Iced Latte name, logo, domain, visual identity, and other brand assets are not licensed for use in a way that suggests official endorsement, partnership, or ownership without explicit written permission.
- π¬ Telegram community: Project community
- π€ Personal Telegram: @lucky_1uck
- π± WhatsApp: Message me
- π§ Email: [email protected]
- π Issues: GitHub Issues
β€οΈ