Skip to content

Repository files navigation

TheThinker

Stop wasting time thinking about what to wear. Scan · Schedule · Style

AI-powered outfit recommendation app. Users scan their wardrobe, sync their calendar, and receive a daily outfit suggestion based on occasion, weather, and personal style.

Xsolla School Project · 2025


Repository Structure

backend/       ← Go API server (DDD)
frontend/      ← React SPA (Vite + Tailwind v4)
api/           ← OpenAPI spec (shared contract)
apphost.mts    ← Aspire AppHost — all services wired here

Getting Started

Prerequisites

Tool Version Install
Aspire CLI 13.4 dotnet tool install -g aspire
Go 1.25 goenv install 1.25.0
Node 22.16.0 nvm install 22.16.0
Docker any docker.com

Run everything (recommended)

aspire run

This single command starts Postgres, the AI service, the Go backend, and the React frontend — fully wired with service discovery and telemetry. The Aspire dashboard URL is printed on startup.

Other Aspire commands

aspire run          # start all services
aspire stop         # stop all services
aspire ps           # list running resources and their ports
aspire logs backend # stream logs from a specific resource
aspire dashboard    # open the Aspire dashboard in a browser

Individual services (without Aspire)

Backend only
# Start all supporting services (Postgres, AI) via Aspire
aspire run

# Then in a separate terminal, run just the backend directly
cd backend
DATABASE_URL=<your-postgres-url> JWT_SECRET=dev go run ./cmd/api

Server starts on http://localhost:8080. Hit GET /healthz to confirm.

Frontend only
nvm use
cd frontend
npm install
npm run dev

App starts on http://localhost:5173 and proxies /api/* to the backend.


Environment Variables

The app runs without any API keys — AI and weather features gracefully degrade. To enable them:

Variable Required for How to get it
ANTHROPIC_API_KEY AI outfit recommendations console.anthropic.com (free tier available)
WEATHER_API_KEY Live weather in outfit suggestions openweathermap.org (free)
JWT_SECRET Auth (auto-generated in dev) Any long random string
DATABASE_URL Postgres connection Auto-wired by Aspire in dev

With Aspire (recommended): set keys in your shell before aspire run:

export ANTHROPIC_API_KEY=sk-ant-...
export WEATHER_API_KEY=...
aspire run

Without Aspire: copy backend/.env.example to backend/.env and fill in the values.

Without ANTHROPIC_API_KEY, the app starts normally — wardrobe, calendar, and auth all work. Only the outfit recommendation endpoint returns a 422 with a clear message.


API Reference

Full spec at api/openapi.yaml.

Feature Method Endpoint
Auth POST /auth/register · /auth/login
Preferences GET PUT /users/me/preferences
Wardrobe GET POST /wardrobe/items · /wardrobe/scan
Calendar POST DELETE /calendar/connect · /calendar/disconnect
Outfit GET /recommendations/outfit

Team

Name
Naqi
Nabihah
Ilman
Aizat
Cyril

About

AI-powered outfit recommendation app. Scan your wardrobe, sync your calendar, get daily outfit suggestions. Go (DDD) + React/Vite/Tailwind + Python AI service. Aspire orchestration, Cloud Run.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages