Skip to content

CodersCrew-2/roadmap-gen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Roadmap Gen

Generates personalized growth roadmaps (sports, creative, academics, tech, business, research) as structured graph JSON.

1771688820683566.1.mp4

Stack

  • Python 3.13 / FastAPI / Uvicorn
  • LangGraph + LangChain (init_chat_model — provider-agnostic)
  • Pydantic v2 / pydantic-settings

Quick start

# 1. Configure environment
cp .env.example .env          # then fill in your API key
# or export directly:
export LLM_API_KEY="AIza..."
export LLM_PROVIDER="google_genai"  # optional, default: google_genai
export LLM_MODEL="gemini-2.0-flash"  # optional, default: gemini-2.0-flash

# 2. Install dependencies
uv sync

# 3. Run the server
uv run uvicorn app.main:app --host 0.0.0.0 --port 8000

API

Health check

GET /health

Generate roadmap

POST /v1/roadmaps
Content-Type: application/json

{
  "profile": {
    "domain": "tech",
    "goal": "become a backend engineer",
    "current_level": "beginner",
    "skills": ["python"],
    "experience_years": 1,
    "timeline_months": 6,
    "daily_hours": 3,
    "age": 25,
    "location": "remote",
    "constraints": ["no paid courses"],
    "resources_access": ["laptop", "internet"],
    "preferences": {"language": "python"}
  }
}

Example curl

curl -s -X POST http://localhost:8000/v1/roadmaps \
  -H "Content-Type: application/json" \
  -d '{
    "profile": {
      "domain": "tech",
      "goal": "become a backend engineer",
      "current_level": "beginner",
      "skills": ["python"],
      "timeline_months": 6
    }
  }' | python -m json.tool

Configuration

Variable Default Description
LLM_API_KEY (required) API key for the LLM provider
LLM_PROVIDER google_genai LangChain model provider
LLM_MODEL gemini-2.0-flash Model name
LLM_TEMPERATURE 0.3 Sampling temperature
REQUEST_TIMEOUT_SECONDS 120 Max seconds per request
LOG_LEVEL INFO Python logging level

Supported domains

sports · creative · academics · tech · business · research

Adding a new domain

  1. Create app/engine/planners/my_domain.py extending BasePlanner.
  2. Add a prompt entry in app/engine/prompts.pyDOMAIN_GUIDANCE.
  3. Register it in app/engine/domain_router.py_REGISTRY.

Releases

No releases published

Packages

No packages published