-
Notifications
You must be signed in to change notification settings - Fork 1
Home
Sarthak edited this page Jul 23, 2025
·
1 revision
# SmartQuery
**Transform your CSV data into insights with natural language queries.**
Welcome to the SmartQuery project! This wiki provides comprehensive documentation for developers, contributors, and users.
---
## What is SmartQuery?
SmartQuery is a modern, full-stack application that lets users:
- Upload CSV files and manage data projects
- Ask questions in plain English and get instant answers
- Visualize data with charts and tables
- Use semantic search and advanced analytics
- Track query performance and monitor insights
---
## Quick Links
- [Architecture Overview](./Architecture)
- [Frontend Guide](./Frontend)
- [Backend Guide](./Backend)
- [API Reference](./API-Reference)
- [Testing & CI/CD](./Testing-and-CI-CD)
- [Security & Compliance](./Security-and-Compliance)
- [Deployment](./Deployment)# Architecture Overview
SmartQuery is a full-stack application with the following components:
- **Frontend:** Next.js 14 (TypeScript), Tailwind CSS, Zustand, Recharts
- **Backend:** FastAPI (Python), PostgreSQL, Redis, MinIO, Celery
- **Infrastructure:** Docker, Docker Compose, GitHub Actions CI/CD
## Key Features
- Google OAuth authentication
- JWT token management
- Project and file management
- Natural language query interface
- Data visualization and analytics
- Async CSV processing and schema analysis
- Vector search (planned)
- SOC2-compliant security practices
## Directory Structure
SmartQuery/ backend/ frontend/ database/ docs/ infra/ shared/ scripts/
# Frontend Guide
## Tech Stack
- Next.js 14 (TypeScript)
- Tailwind CSS + DaisyUI
- Zustand (state management)
- Recharts (charts)
- Axios (API requests)
## Features
- Google OAuth login
- JWT token management
- Protected routes (dashboard, projects)
- File upload UI (CSV)
- Chat interface for queries
- Data visualization (charts/tables)
- Responsive, mobile-first design
## File Structure
frontend/src/ app/ components/ lib/ hooks/ styles/ tests/
## Development
- Run `npm install` in `frontend/`
- Start dev server: `npm run dev`
- Run tests: `npm run test`
# Backend Guide
## Tech Stack
- FastAPI (Python)
- PostgreSQL
- Redis
- MinIO (S3-compatible)
- Celery (async tasks)
- Docker
## Features
- Google OAuth authentication
- JWT access/refresh tokens
- User and project management
- File upload and storage (MinIO)
- Async CSV processing (Celery, pandas)
- Schema analysis and data insights
- Modular API with routers and services
## Development
- Run `pip install -r requirements.txt` in `backend/`
- Start dev server: `uvicorn backend.main:app --reload`
- Run tests: `pytest`# API Reference
See [docs/API_SPEC.md](../docs/API_SPEC.md) for the full OpenAPI-style documentation.
## Main Endpoints
- `/auth/google` - Google OAuth login
- `/auth/me` - Get current user
- `/projects` - CRUD for projects
- `/projects/{id}/upload-url` - Get presigned upload URL
- `/projects/{id}/process` - Trigger CSV processing
- `/chat/{project_id}/message` - Send a query
- `/chat/{project_id}/messages` - Get chat history
- `/health` - Health check
## Error Codes
See the API spec for details.# Testing & CI/CD
## Frontend
- Unit/component tests: Vitest + React Testing Library
- E2E tests: Playwright
## Backend
- Unit/integration tests: pytest
- Test database: SQLite
## CI/CD
- GitHub Actions for lint, test, build, and security scan
- Node 18.x and 20.x supported
- ESLint v8 for Next.js 14 compatibility
## How to Run Tests
- Frontend: `npm run test`
- Backend: `pytest`# Security & Compliance
## SOC2 Compliance
SmartQuery is designed with security and privacy in mind. The application will be **SOC2 compliant** to ensure the highest standards for handling sensitive user data.
- Secure authentication (Google OAuth, JWT)
- Encrypted storage (MinIO, PostgreSQL)
- Role-based access control
- Audit logging (planned)
- Regular security reviews and CI/CD checks
## Best Practices
- All secrets managed via environment variables
- HTTPS enforced in production
- Regular dependency updates and vulnerability scans# Deployment
## Local Development
- Use `docker-compose.yml` to spin up all services (Postgres, Redis, MinIO, Celery, Flower)
- Frontend and backend can be run independently
## Production
- Deploy frontend to Vercel, Railway, or static hosting
- Deploy backend with Docker (GKE, Railway, Fly.io, etc.)
- Environment variable validation on startup
## Environment Variables
See `.env.example` and `docs/ENVIRONMENT_SETUP.md` for required variables.