Project Overview
This repository contains the main components of our application, organized as follows:
-
app/
: Contains the user interfaces for the project. -
server/
: Contains the backend server implementation.
Both the app
and server
folders include their own README.md
files with detailed instructions and explanations to help you understand and work with each part of the project more effectively.
For more information, please refer to the respective README.md
files inside each folder.
Tuteli - React Native App
🎨 Features
- Dark/Light Theme Support: Automatic theme switching based on device settings
- Modern Navigation: React Navigation
- Responsive Design: NativeWind
- Type Safety: TypeScript
- Code Quality: ESLint and Prettier
📋 Available Scripts
Command | Description |
---|---|
npm start |
Start the Expo development server |
npm run android |
Run on Android device/emulator |
npm run ios |
Run on iOS device/simulator |
npm run web |
Run in web browser |
npm run lint |
Run ESLint and Prettier checks |
npm run format |
Format code with ESLint and Prettier |
npm run prebuild |
Generate native code for custom builds |
🔧 Development Setup
-
Mobile Development:
- Install Expo Go on your mobile device
- For Android: Set up Android Studio
- For iOS: Set up Xcode (macOS only)
-
Web Development:
- No additional setup required, runs in any modern browser
📝 Notes
- This project uses Expo SDK 53
- React Native version 0.79.5
- Supports iOS, Android, and Web platforms
- Uses the new React 19 features
🤝 Contributing
When contributing to this project:
- Run
npm run lint
before committing - Use
npm run format
to ensure consistent code formatting - Follow the existing project structure and naming conventions
📱 .env — App
# Base API URL (used by the mobile and web app)
EXPO_PUBLIC_API_URL=http://127.0.0.1:5000
Tuteli - Flask Server
This is the Tuteli project.
Branch Naming Convention
-
Features: Branches should be named according to the user story being implemented, using the format:
feat/US_XX
whereXX
is the user story number. -
Bug Fixes: Branches for bug fixes should use the format:
bugfix/BUG_XX
whereXX
is the bug number.
Note: If a corresponding task does not exist for your work, coordinate with the Project Manager (AGES IV) to ensure a task is created before proceeding. This helps maintain alignment and proper tracking of all development activities.
Commit Guidelines
Commits shall contain a brief description of what was implemented. This helps maintain clarity and traceability throughout the development process.
How to run locally
- Make sure you are in the server directory:
cd server
- Create a Python virtual environment (version 3.11):
python3.13 -m venv venv
source venv/bin/activate
- Install the dependencies:
pip install -r requirements.txt
- Export the environment variables and start the Flask server:
export FLASK_APP=src.app
export FLASK_ENV=development
flask run
Structure
tuteli/server/
├── src/ # Application source code
│ ├── app.py # Main entry point (Flask)
│ ├── models/ # Data models
│ ├── routes/ # API routes/endpoints
│ └── services/ # Business logic and helper services
├── tests/ # Automated tests
├── requirements.txt # Python dependencies
├── serverless.yml # Serverless Framework configuration
├── terraform/ # Terraform scripts and modules
└── README.md # Project documentation
🌐 .env — Server
# Default AI provider
AI_PROVIDER=gemini
# Gemini configuration
GEMINI_API_KEY=your_gemini_api_key_here
GEMINI_MODEL=gemini-2.5-flash
# OpenAI configuration
OPENAI_API_KEY=your_openai_api_key_here
OPENAI_MODEL=gpt-3.5-turbo
# Other settings
MAX_CONVERSATION_HISTORY=20
MAX_MESSAGE_LENGTH=4000