This project was developed during a 48-hour hackathon at 42 Lausanne. We developed a chatbot that helps teenagers find how to study or work in the field of software in Switzerland. Our application also has tiny software apps, to learn how to execute and modify small Python snippets.
You need to install uv to install the correct Python version and the libraries.
Follow the instructions below to install it:
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Or via pip
pip install uvYou need an API key for the LLM. Copy .env_template into .env and add your key and product ID.
Then install the dependencies and run the Streamlit app:
# install the dependencies
uv sync
# create the vector store
uv run notebooks/create_vector_store.py
# run the app
uv run streamlit run app.pyThe app should open automatically in your browser at http://localhost:8501.
hackathon_start/
├── app.py # Main application entry point
├── pages/ # Streamlit multi-page app
│ ├── 1_🤖_chatbot.py # RAG chatbot with AI
│ ├── 2_🎯_pratique.py # Practice modules selection
│ ├── 3_💻_backend.py # Interactive Python editor
│ ├── 4_🌐_frontend.py # Interactive Streamlit editor
│ ├── 5_🔒_cyber.py # Cybersecurity challenge
│ └── 6_🎮_gamedev.py # Interactive JavaScript game
├── src/
│ ├── core/ # Business logic
│ │ ├── embeddings.py # Embeddings management
│ │ ├── llm.py # LLM integration (Bedrock)
│ │ └── rag.py # RAG pipeline
│ ├── ui/ # UI components
│ │ ├── components/ # Reusable components (sidebar, etc.)
│ │ └── styles/ # Custom CSS styles
│ └── utils/ # Utilities
│ ├── config.py # Configuration
│ └── constants.py # Constants
├── data/ # Data and vector database
│ ├── chroma.sqlite3 # ChromaDB database
│ └── links.csv # Source data
├── notebooks/ # Jupyter notebooks
│ └── create_vector_store.py # Vector store creation script
├── assets/ # Static resources
│ └── images/ # Application images
├── .streamlit/ # Streamlit configuration
│ └── config.toml # Theme and settings
└── pyproject.toml # Dependencies and project configuration
MIT.