# Project Plan

## Project Idea

Distributed, search-first file storage. Users can store files and retrieve them efficiently through search and filtering.

## User Flow

1. The user opens a web UI built with Angular.
2. The user logs in.
3. The backend issues a JWT.
4. The JWT is used to authorize access to the user's files and metadata.

## Technical Architecture (Planned)

- Frontend: Angular web UI
- Backend: Node.js service
- Metadata Search: Elasticsearch (tags and file metadata)
- Storage: Redundant storage across two databases/services
- Deployment: Kubernetes
- Load balancing: Kubernetes services / ingress
- Scaling: Multiple backend replicas (target: 2+)
- Cluster management/overview: Argo CD in the Kubernetes cluster

## Search-First Goal

Elasticsearch stores metadata (including tags) so users can filter and find files quickly instead of browsing manually.

## Next Implementation Milestones

1. Implement authentication and JWT issuance.
2. Add file upload/download endpoints in Node.js backend.
3. Define metadata schema in Elasticsearch.
4. Connect Angular UI to auth and file APIs.
5. Deploy backend + search + storage components to Kubernetes.
6. Add autoscaling and validate behavior under load.
