Skip to content

Sunagatov/Iced-Latte

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2,150 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Iced Latte

Iced Latte

A production-grade Java coffee marketplace β€” built in the open, for engineers who want real experience.

🌐 Live Demo Β· πŸ“– API Specs Β· 🟒 Good First Issues Β· πŸ’¬ Community

CI Status Quality Gate codecov License: Evaluation Only

GitHub Stars GitHub Forks Contributors Docker Pulls


πŸ“Š Key stats across all three repositories:

⭐ If this project helps you learn or inspires you, please give it a star β€” it means a lot to the community!


πŸš€ Quick Start

πŸ“‹ Prerequisites: Java 25, Maven 3.9+, Docker Desktop

# 1. πŸ“₯ Clone
git clone https://github.com/Sunagatov/Iced-Latte.git && cd Iced-Latte

# 2. 🐳 Start infrastructure (PostgreSQL, Redis, MinIO)
docker compose --env-file .env.example up -d postgres redis minio minio-init

# 3. ▢️ Run
# Linux / macOS / Git Bash on Windows:
set -a && source .env.example && set +a && mvn spring-boot:run

πŸͺŸ Windows (PowerShell / CMD): the shell command above won't work as written. Use IntelliJ with .env.example loaded in the run configuration, or use the full Docker path instead β€” see Getting Started.

⚠️ Important: .env.example is intentionally tuned for contributors: SPRING_PROFILES_ACTIVE=dev, optional integrations such as Stripe stay disabled, and local HTTP access logs run at DEBUG.

🌐 App runs at http://localhost:8083 Β· πŸ“š Swagger UI at http://localhost:8083/api/docs/swagger-ui/index.html

πŸ’‘ Using IntelliJ? See Getting Started for all four local run modes, IDE run configuration, Docker-only setup, and troubleshooting.

🎞️ Want to run the frontend too? Clone the frontend repo as a sibling and use Options 1-4 in Getting Started:

git clone https://github.com/Sunagatov/Iced-Latte-Frontend.git  # sibling of Iced-Latte/

Frontend can run either locally or in Docker, depending on the mode you pick.

⚠️ Docker commands should also use .env.example, so the backend container starts in the same local dev profile unless you explicitly override it.

πŸ§ͺ Run the tests:

mvn test

βœ… Tests use Testcontainers β€” Docker must be running.


πŸ“Έ Preview

Iced Latte Main Page

Live application interface


πŸ€” What is this?

Iced Latte is a non-profit sandbox project 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 first participants were students, Telegram channel subscribers, and mentees from ADPList and Women In Tech. 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!


πŸ† Recognition

Iced Latte has earned recognition from the broader tech community.

πŸ”₯ GitHub Trending πŸ”₯ β€” May 22, 2024

  • The backend repository reached GitHub's Trending page β€” listed among resources "the GitHub community is most excited about today" β€” gaining 85 stars in a single day with 27 active contributors. (link to the archive)

πŸ₯‰ KaiCode 2024 Finalist πŸ₯‰

  • Iced Latte made it to the finals of KaiCode β€” an annual developer festival launched by Huawei, which positions itself as an incubator of collaborative technologies and rewards promising projects. Iced Latte was selected among 412 applications and placed in the third group of 26 finalist repositories considered for the prize. Jury members are not allowed to assess their own projects, so the selection was fully independent.

πŸ› οΈJetBrains Open Source License πŸ› 

  • Iced Latte was recognized by JetBrains β€” a leading software company specializing in intelligent development tools. JetBrains granted Iced Latte 8 free All Products Pack licenses (February 2024, License Reference No. D379769990).

πŸ‘¨πŸ’» Recommended by a GitHub Star πŸ‘¨


πŸ› οΈ Tech Stack

  • πŸ’» Language: Java 25
  • πŸ—οΈ Framework: Spring Boot 4.0.5, Spring Security, Spring Data JPA, Spring Retry, Spring Actuator
  • πŸ—„οΈ Database: PostgreSQL, Liquibase
  • ⚑ Cache: Redis, Caffeine
  • πŸ”’ Security: JWT (JJWT 0.13), Google OAuth2, Argon2
  • ☁️ Cloud: AWS S3 SDK 2.x, CloudFront, MinIO
  • πŸ’³ Payment: Stripe
  • πŸ€– AI: LangChain4j, OpenAI-compatible APIs
  • πŸ“Š Observability: Micrometer, Prometheus, OpenTelemetry, Sentry, Loki, Datadog
  • πŸ§ͺ Testing: JUnit 5, Testcontainers, REST Assured, Instancio, Jacoco
  • πŸ“‹ API: OpenAPI 3, SpringDoc 3.0, OpenAPI Generator 7
  • πŸ”„ Mapping: MapStruct 1.6, Lombok

πŸ“š Guides & Features

  • πŸ“„ Getting Started β€” all four local run modes, IDE setup, Docker-only mode, troubleshooting
  • πŸ“„ Infrastructure β€” how the database, object storage, and Redis cache are wired together, with free-tier provider options and env vars explained
  • πŸ“„ Architecture: Feature Packaging β€” modular-monolith rule: keep business code inside its owning feature package
  • πŸ“„ Contributing β€” how to contribute, PR guidelines, branching
  • πŸ“„ Security Policy β€” security policy and vulnerability reporting
  • πŸ“„ Code of Conduct β€” community standards and expected behavior
  • πŸ“„ LICENSE β€” personal local evaluation only; public/educational/commercial use requires permission

πŸ“ Project Structure

src/main/java/com/zufar/icedlatte/
β”œβ”€β”€ πŸ”’ security/       # JWT auth, Google OAuth2, registration, login, sessions, rate limiting
β”œβ”€β”€ πŸ”‘ auth/           # Google OAuth2 callback, auth redirects
β”œβ”€β”€ πŸ‘€ user/           # User profile, addresses, avatars
β”œβ”€β”€ πŸ“¦ product/        # Product catalog, filters, images
β”œβ”€β”€ πŸ›’ cart/           # Shopping cart
β”œβ”€β”€ πŸ“‹ order/          # Orders, order lifecycle, order history
β”œβ”€β”€ πŸ’³ payment/        # Stripe payment, checkout, webhooks
β”œβ”€β”€ ⭐ review/         # Product reviews, ratings, AI moderation
β”œβ”€β”€ ❀️ favorite/       # Favorites list
β”œβ”€β”€ πŸ“§ email/          # Email verification & notifications
β”œβ”€β”€ πŸ“ filestorage/    # AWS S3 / MinIO file upload/download
β”œβ”€β”€ πŸ”§ common/         # Shared utilities, validation, monitoring, HTTP helpers
└── πŸš€ astartup/       # Startup data migration and bootstrap tasks

🀝 Contributing

πŸŽ‰ Contributions are welcome. Here's how to get involved:

  • πŸ› Found a bug: Open an issue with the bug label
  • πŸ’‘ Want a feature: start a Discussion first
  • πŸ‘¨πŸ’» Ready to code: pick a good first issue, then comment "I'm on it"
  • πŸ”§ Big change: comment on the issue before writing code β€” many tickets have hidden constraints

🏷️ Issue labels

  • 🟒 good first issue β€” simple, well-scoped, and great for first-timers
  • πŸ”΄ bug β€” something is broken
  • πŸ”΅ high priority β€” do this first
  • 🟑 enhancement β€” accepted improvement to an existing module
  • 🟠 new feature β€” new functionality; discuss before starting
  • βšͺ idea β€” needs design discussion; don't implement yet

πŸ› Bug reports

  • πŸ” Search existing issues before opening a new one
  • πŸ“ Clearly describe observed vs expected behavior
  • πŸš€ For minor fixes, just open a PR directly

πŸ”„ Pull requests

  • 🎯 Keep PRs focused β€” one concern per PR
  • βœ… Make sure mvn test passes locally before pushing
  • πŸ”— Reference the issue number in your PR description

🍴 Forking

🀝 Forks are welcome. Please share useful features back via PR so the community benefits and your fork stays easy to sync.


πŸ“„ License

πŸ“œ Iced Latte Personal Evaluation License 2026 β€” personal local evaluation only. Public, educational, remote-hosted, and commercial use require explicit written permission from the author (zufar.sunagatov@gmail.com).


πŸ“ž Contact

❀️

Packages

 
 
 

Contributors