Skip to content

Repository files navigation

What is Perfume Tracker?

Perfume Tracker lets you track, review, and analyze your perfume collection with AI-powered recommendations.

screenshot

Features

✅ Track Your Collection → Track and review your perfumes.

✅ Usage Logging → "Spray On" function lets you track usage.

✅ Full-Text Search → Find perfumes to review or check perfumes with zero stock.

✅ AI Recommendations → Get smart perfume suggestions based on your preferences.

✅ Random Picks → Get a random perfume choice, find that one bottle that you forget to wear.

Tech Stack

  • Frontend: React 19 + Vite
  • Backend: ASP.NET Core 10
  • Database: PostgreSQL
  • Storage: Cloudflare R2

Quick Start

Docker-compose:

services:
    perfume-tracker:
        image: adamsarok/perfume-tracker
        ports:
          - 3000:3000
        restart: unless-stopped

    perfume-tracker-api:
        image: adamsarok/perfume-tracker-api
        ports:
          - 7080:8080
          - 7081:8081
        environment:
          - ConnectionStrings__DefaultConnection=Server=db; Port=5432; User Id=postgres; Password=postgres; Database=perfumetracker
          - OpenAi__ApiKey=${OPENAI_API_KEY}
          - Jwt__Key=${JWT_KEY}
          - Jwt__Issuer=PerfumeTrackerServer
          - Jwt__Audience=PerfumeTrackerClient
          - Jwt__ExpirationHours=24
          - Users__AdminUserName=admin
          - Users__AdminEmail=admin@example.com
          - Users__AdminPassword=${ADMIN_PASSWORD}
          - Users__DemoUserName=demo
          - Users__DemoEmail=demo@example.com
          - Users__DemoPassword=${DEMO_PASSWORD}
          - R2__AccessKey=${R2_ACCESS_KEY}
          - R2__SecretKey=${R2_SECRET_KEY}
          - R2__AccountId=${R2_ACCOUNT_ID}
          - R2__BucketName=${R2_BUCKET_NAME}
          - R2__ExpirationHours=24
          - R2__MaxFileSizeKb=256
          - RateLimits__General=250
          - RateLimits__Auth=20
          - RateLimits__Upload=10
          - CORS__AllowedOrigins__0=${SERVER_ADDRESS}
          - OpenAI__ApiKey=${OPENAI_API_KEY}
          - OpenAI_AssistantModel=gpt-5-nano-2025-08-07

        restart: unless-stopped

    db:
      image: postgres:16.5
      restart: always
      shm_size: 128mb
      volumes:
      - ./postgres:/var/lib/postgresql/data
      environment:
        POSTGRES_PASSWORD: postgres
        PGDATA: /var/lib/postgresql/data/pgdata
        POSTGRES_DB: perfumetracker 
      ports:
        - 5432:5432

Badges

Docker Image CI codecov Quality Gate Status

Client: Docker Hub

API: Docker Hub

About

Perfume Tracker lets you track, review, and analyze your perfume collection with AI-powered recommendations.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages