SavWise AI is an open-source financial coaching platform designed to help people in Sierra Leone manage money better.
# SavWise AI
SavWise AI is an open-source full-stack MVP prototype for DLAW207 I.T Law and IPR Legal Issues. It supports **SDG 1: No Poverty** by helping Sierra Leonean users track spending, build savings goals, check purchase affordability, and receive educational AI financial coaching.
## Technology stack
- Frontend: HTML, Tailwind CSS CDN, vanilla JavaScript
- Backend: Go `net/http`
- Database: PostgreSQL
- AI coach: Wizz (powered by Groq Chat Completions API through the Go backend)
- Data export: JSON and CSV
## Academic honesty boundary
This is a university MVP prototype. It uses manually entered or simulated financial data. It does not connect to real Orange Money or Afrimoney accounts, transfer money, perform KYC, issue loans, or provide regulated investment, legal, banking, or professional financial advice.
## Security Notes
- **Never commit `.env`** to version control. It contains your `GROQ_API_KEY`.
- If your `GROQ_API_KEY` is exposed, rotate it immediately in your Groq console.
- This is a university MVP. It does not process real payments or connect to real mobile-money accounts.
- Do not enter PINs, OTPs, passwords, national ID numbers, or real KYC data.
- All SQL queries use parameterized inputs. User input is validated before processing.
## Setup
1. Install Go and PostgreSQL.
2. Create a database:
```bash
createdb savwise_ai
```
3. Copy `.env.example` to `.env` and edit the values:
```bash
cp .env.example .env
```
4. Install Go dependencies:
```bash
go mod tidy
```
5. Run the app from the project root:
```bash
go run main.go
```
6. Open:
```text
localhost
```
Migrations run automatically from the `migrations/` folder on startup.
## Current MVP Limitations
- Multi-user support is prototype-level using localStorage. Not production-ready authentication.
- No real mobile-money API integration (requires provider approval).
- CSV import supports transactions only. Use JSON for full backup/restore.
- Dark mode uses custom CSS …