An AI-powered gaming companion that helps you navigate through game guides using natural language. Built with Next.js and FastAPI.
- Guide Management: Download and organize game guides from GameFAQs
- AI Chat Interface: Interact with guides using natural language
- Modern Web Interface: Clean, responsive UI built with Next.js
- Real-time Updates: Instant feedback and chat responses
- Python 3.10 or higher
- Node.js 18 or higher
- Mistral API key
-
Clone the repository:
git clone https://github.com/yourusername/gamefriend.git cd gamefriend -
Create and activate a virtual environment:
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate
-
Install dependencies:
pip install poetry poetry install
-
Set up environment variables:
cp .env.example .env # Edit .env with your Mistral API key
-
Navigate to the frontend directory:
cd frontend -
Install dependencies:
pnpm install
-
Set up environment variables:
cp .env.example .env.local # Edit .env.local with your backend API URL
-
Start the backend server:
# From the project root poetry run uvicorn gamefriend.main:app --reload -
Start the frontend development server:
# From the frontend directory pnpm dev -
Open your browser and navigate to
http://localhost:3000
-
Run tests:
poetry run pytest
-
Type checking:
poetry run mypy . -
Linting:
poetry run flake8
-
Run tests:
pnpm test -
Type checking:
pnpm type-check
-
Linting:
pnpm lint
gamefriend/
├── frontend/ # Next.js frontend application
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Next.js pages
│ │ ├── api/ # API client code
│ │ └── styles/ # CSS and styling
│ └── public/ # Static assets
│
├── gamefriend/ # FastAPI backend application
│ ├── api/ # API endpoints
│ ├── chat/ # Chat functionality
│ ├── guide/ # Guide management
│ ├── models/ # Data models
│ └── utils/ # Utility functions
│
└── tests/ # Test files
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.