Skip to content

imranstein/ValuAdis

Repository files navigation

ValuAdis - Ethiopian Property Valuation Platform

License Python Vue Flutter

ValuAdis is a B2G (Business-to-Government) GovTech SaaS platform enabling licensed property valuers in Ethiopia to conduct digital property assessments compliant with Proclamation 1365/2025.


🌟 Features

  • πŸ—ΊοΈ GIS Boundary Mapping: GPS-based property boundary capture with automatic area calculation
  • πŸ“Š Automated Valuation: Market value calculation with 25% taxable value computation
  • πŸ“„ Compliance Certificates: Proclamation 1365/2025 compliant PDF generation with QR verification
  • πŸ“± Offline-First Mobile: 7-day offline capability for field work in low-connectivity areas
  • πŸ’³ Flexible Pricing: 5,000 ETB/month SaaS + 50 ETB per certificate (1-month free demo)
  • πŸ‡ͺπŸ‡Ή Data Sovereignty: 100% Ethiopian hosting (Raxio Tier III data center)

πŸ—οΈ Tech Stack

Backend

  • Framework: FastAPI (Python 3.11+)
  • Database: PostgreSQL 15 + PostGIS 3.3
  • Caching: Redis 7.x
  • Geospatial: Shapely, GeoPandas
  • PDF Generation: ReportLab
  • Containerization: Docker + Docker Compose

Frontend (Web)

  • Framework: Vue.js 3 (Composition API)
  • Meta-framework: Nuxt.js 3 (SSR/SSG)
  • State Management: Pinia
  • UI Components: PrimeVue
  • Maps: Leaflet.js + OpenStreetMap

Mobile

  • Framework: Flutter 3.x (cross-platform)
  • Local Storage: SQLite + Hive
  • State Management: BLoC pattern
  • Maps: flutter_map + OpenStreetMap

DevOps

  • Hosting: Yegara.com (Standard VPS) β†’ Raxio Tier III (scale)
  • Architecture: Modular Monolith β†’ Microservices (when needed)
  • CI/CD: GitHub Actions
  • Monitoring: Sentry + UptimeRobot
  • Deployment: Docker Compose + Nginx

πŸš€ Quick Start

Prerequisites

  • Docker & Docker Compose
  • Python 3.11+
  • Node.js 18+
  • Flutter 3.x (for mobile development)

Local Development

# Clone repository
git clone https://github.com/yourusername/ValuAdis.git
cd ValuAdis

# Start all services with Docker Compose
docker-compose up -d

# Services will be available at:
# - Backend API: http://localhost:8000
# - Frontend: http://localhost:3000
# - API Documentation: http://localhost:8000/docs
# - PostgreSQL: localhost:5432
# - Redis: localhost:6379

Production Deployment

For production deployment on Yegara.com, see the Deployment Guide.

# Quick production deployment
git clone https://github.com/yourusername/ValuAdis.git
cd ValuAdis
cp .env.production .env
# Edit .env with production values
./scripts/deploy.sh

Backend Setup (Without Docker)

cd backend

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Setup environment variables
cp .env.example .env
# Edit .env with your configuration

# Run database migrations
alembic upgrade head

# Start development server
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

Frontend Setup (Without Docker)

cd frontend

# Install dependencies
npm install

# Setup environment variables
cp .env.example .env
# Edit .env with your configuration

# Start development server
npm run dev

Mobile Setup

cd mobile

# Get Flutter dependencies
flutter pub get

# Run on emulator/device
flutter run

# Run tests
flutter test

πŸ“ Project Structure

ValuAdis/
β”œβ”€β”€ backend/              # FastAPI application
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ api/         # API endpoints
β”‚   β”‚   β”œβ”€β”€ models/      # SQLAlchemy models
β”‚   β”‚   β”œβ”€β”€ services/    # Business logic
β”‚   β”‚   β”œβ”€β”€ repositories/# Data access
β”‚   β”‚   └── core/        # Security, config
β”‚   β”œβ”€β”€ tests/           # Backend tests
β”‚   └── requirements.txt
β”‚
β”œβ”€β”€ frontend/            # Vue.js + Nuxt.js web app
β”‚   β”œβ”€β”€ components/      # Vue components
β”‚   β”œβ”€β”€ pages/           # Nuxt pages
β”‚   β”œβ”€β”€ stores/          # Pinia stores
β”‚   β”œβ”€β”€ composables/     # Vue composables
β”‚   └── package.json
β”‚
β”œβ”€β”€ mobile/              # Flutter mobile app
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   β”œβ”€β”€ presentation/# Screens & widgets
β”‚   β”‚   β”œβ”€β”€ data/        # Models & repositories
β”‚   β”‚   β”œβ”€β”€ services/    # Business logic
β”‚   β”‚   └── core/        # Constants & utils
β”‚   β”œβ”€β”€ test/            # Mobile tests
β”‚   └── pubspec.yaml
β”‚
β”œβ”€β”€ Docs/                # Comprehensive documentation
β”‚   β”œβ”€β”€ SRS/             # Software requirements
β”‚   β”œβ”€β”€ Architecture/    # System architecture
β”‚   β”œβ”€β”€ Guidelines/      # Development guidelines
β”‚   β”œβ”€β”€ Timeline/        # Project timeline
β”‚   └── Memory-Bank/     # Project context
β”‚
└── docker-compose.yml   # Docker orchestration

πŸ“š Documentation

Core Documentation

Architecture

API Documentation


πŸ§ͺ Testing

Backend Tests

cd backend

# Run all tests
pytest

# Run with coverage
pytest --cov=app --cov-report=html

# Run specific test file
pytest tests/unit/test_spatial_service.py

# View coverage report
open htmlcov/index.html

Frontend Tests

cd frontend

# Run unit tests
npm run test:unit

# Run with coverage
npm run test:unit -- --coverage

# Run E2E tests
npm run test:e2e

Mobile Tests

cd mobile

# Run all tests
flutter test

# Run with coverage
flutter test --coverage

# Run integration tests
flutter test integration_test/

πŸ” Security

  • Authentication: JWT tokens (24h access, 30d refresh)
  • Password Hashing: bcrypt (cost factor 12)
  • Data Encryption: AES-256 at rest, TLS 1.3 in transit
  • Rate Limiting: 100 requests/minute per user
  • Data Sovereignty: All data hosted in Ethiopia
  • Compliance: Proclamation 1365/2025 adherence

🌍 Environment Variables

Backend (.env)

DATABASE_URL=postgresql://user:password@localhost:5432/valuadis
REDIS_URL=redis://:password@localhost:6379/0
SECRET_KEY=your-secret-key-here
ENVIRONMENT=development

# M-Pesa Configuration
MPESA_CONSUMER_KEY=your-consumer-key
MPESA_CONSUMER_SECRET=your-consumer-secret
MPESA_SHORTCODE=174379
MPESA_PASSKEY=your-passkey

# Email Configuration
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=noreply@valuadis.et
SMTP_PASSWORD=your-password

Frontend (.env)

NUXT_PUBLIC_API_BASE=http://localhost:8000/api/v1

🚒 Deployment

Production Deployment (cPanel)

# Build Docker images
docker-compose -f docker-compose.prod.yml build

# Deploy to cPanel
# (Follow cPanel Docker deployment guide)

# Run database migrations
docker-compose exec backend alembic upgrade head

# Verify deployment
curl https://valuadis.et/api/v1/health

Database Backup

# Backup database
docker-compose exec db pg_dump -U valuadis_user valuadis > backup.sql

# Restore database
docker-compose exec -T db psql -U valuadis_user valuadis < backup.sql

πŸ“Š Project Timeline

Start Date: February 25, 2026
Launch Date: March 30, 2026
Duration: 33 days

Milestones

  • βœ… Week 1 (Feb 25 - Mar 3): Foundation & Documentation
  • ⏳ Week 2 (Mar 4 - Mar 10): Backend Core Development
  • ⏳ Week 3 (Mar 11 - Mar 17): Frontend Development
  • ⏳ Week 4 (Mar 18 - Mar 24): Mobile Development
  • ⏳ Week 5 (Mar 25 - Mar 30): Integration, Testing & Launch

🀝 Contributing

This is a proprietary project. Contributions are limited to authorized team members.

Development Workflow

  1. Create feature branch from main
  2. Follow coding standards (see Guidelines)
  3. Write tests (TDD approach)
  4. Submit pull request
  5. Pass code review
  6. Merge to main

Code Style

  • Backend: Black, isort, mypy
  • Frontend: ESLint, Prettier
  • Mobile: Dart analyzer, effective_dart

πŸ“ License

Proprietary - All Rights Reserved

Copyright Β© 2026 ValuAdis. Unauthorized copying, distribution, or use is strictly prohibited.


πŸ“ž Contact

Support: support@valuadis.et
Sales: sales@valuadis.et
Technical: tech@valuadis.et


πŸ™ Acknowledgments

  • Proclamation 1365/2025: Ethiopian Property Tax Law
  • OpenStreetMap: Map data and tiles
  • PostGIS: Geospatial database extension
  • FastAPI: Modern Python web framework
  • Vue.js: Progressive JavaScript framework
  • Flutter: Cross-platform mobile framework

Built with ❀️ in Ethiopia for Ethiopian Property Valuers

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors