docs: add README with project overview, auth flow, and build instructions
This commit is contained in:
parent
1768dd39b3
commit
0bd38fed04
123
README.md
Normal file
123
README.md
Normal file
@ -0,0 +1,123 @@
|
||||
# ResBuilder Android
|
||||
|
||||
Native Android client for [ResBuilder AI](https://git.aridgwayweb.com/armistace/resbuilder_ai) — an AI-powered resume and cover letter generator.
|
||||
|
||||
## Overview
|
||||
|
||||
This app connects to the ResBuilder backend API to let users:
|
||||
- Authenticate via Google Sign-In
|
||||
- Paste or scrape job descriptions (including SEEK URLs)
|
||||
- Upload existing resumes/cover letters (PDF/DOCX)
|
||||
- Submit AI generation jobs
|
||||
- View generated documents as rendered HTML
|
||||
- Export results as PDF or DOCX
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
com.example.resbuilder
|
||||
├── data
|
||||
│ ├── model # Pydantic-style data classes (User, Job, etc.)
|
||||
│ └── remote # OkHttp API client with Bearer token auth
|
||||
└── ui
|
||||
├── LoginActivity # Google Sign-In via Credential Manager
|
||||
├── MainActivity # Tab navigation + fragment container
|
||||
├── JobFormFragment # Job details, upload, scrape, submit
|
||||
├── JobStatusFragment # Poll job status (2s interval, 10min max)
|
||||
├── ResultFragment # HTML preview, copy, export
|
||||
└── AdminActivity # Admin user management (optional)
|
||||
```
|
||||
|
||||
## Authentication
|
||||
|
||||
Uses **Google Sign-In for Android** (compliant with Google OAuth policy):
|
||||
1. User taps Sign In → native Google account picker
|
||||
2. App receives a Google ID token
|
||||
3. Token is exchanged for a backend session token via `POST /auth/google-token`
|
||||
4. Session token is sent as `Authorization: Bearer <token>` on every API call
|
||||
|
||||
No WebView. No embedded user-agents. No cookies.
|
||||
|
||||
## Requirements
|
||||
|
||||
- Android SDK 29+ (Android 10)
|
||||
- Compile SDK 36
|
||||
- Java 11
|
||||
- Gradle 9.4.1
|
||||
|
||||
## Dependencies
|
||||
|
||||
| Library | Purpose |
|
||||
|---------|---------|
|
||||
| OkHttp 4.12.0 | HTTP client, cookie jar, interceptor |
|
||||
| Gson 2.10.1 | JSON serialization |
|
||||
| Material Components 1.10.0 | UI components (M3) |
|
||||
| Play Services Auth 20.7.0 | Google Sign-In |
|
||||
|
||||
## Configuration
|
||||
|
||||
Set your Google Web Client ID in `LoginActivity.kt`:
|
||||
|
||||
```kotlin
|
||||
private val webClientId = "YOUR_WEB_CLIENT_ID.apps.googleusercontent.com"
|
||||
```
|
||||
|
||||
This must match the `GOOGLE_CLIENT_ID` configured on the backend.
|
||||
|
||||
## Build
|
||||
|
||||
```bash
|
||||
./gradlew assembleDebug
|
||||
```
|
||||
|
||||
APK output: `app/build/outputs/apk/debug/app-debug.apk`
|
||||
|
||||
## API
|
||||
|
||||
The app talks to `https://resume.aridgwayweb.com` (configurable in `ApiClient.kt`).
|
||||
|
||||
Key endpoints used:
|
||||
- `POST /auth/google-token` — exchange Google ID token for session
|
||||
- `GET /auth/me` — current user info
|
||||
- `POST /build_resume` | `/build_cover_letter` — submit generation job
|
||||
- `GET /job/{id}` — poll job status
|
||||
- `POST /upload/resume` | `/upload/cover_letter` — extract text from PDF/DOCX
|
||||
- `POST /scrape-job` — extract text from SEEK URL
|
||||
- `GET /export/{id}/pdf` | `/export/{id}/docx` — download generated document
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
app/src/main/
|
||||
├── java/com/example/resbuilder/
|
||||
│ ├── data/
|
||||
│ │ ├── model/Models.kt
|
||||
│ │ └── remote/ApiClient.kt
|
||||
│ └── ui/
|
||||
│ ├── LoginActivity.kt
|
||||
│ ├── MainActivity.kt
|
||||
│ ├── JobFormFragment.kt
|
||||
│ ├── JobStatusFragment.kt
|
||||
│ ├── ResultFragment.kt
|
||||
│ ├── AdminActivity.kt
|
||||
│ └── AdminUserAdapter.kt
|
||||
├── res/layout/
|
||||
│ ├── activity_login.xml
|
||||
│ ├── activity_main.xml
|
||||
│ ├── fragment_job_form.xml
|
||||
│ ├── fragment_job_status.xml
|
||||
│ ├── fragment_result.xml
|
||||
│ └── activity_admin.xml
|
||||
└── res/values/
|
||||
├── colors.xml
|
||||
├── strings.xml
|
||||
└── themes.xml
|
||||
```
|
||||
|
||||
## Design System
|
||||
|
||||
See `.agents/design/DESIGN.md` for the Material Design 3 + Amazon/Google design guidelines used across the app.
|
||||
|
||||
## License
|
||||
|
||||
Same as the backend project.
|
||||
Loading…
x
Reference in New Issue
Block a user