fixed things
This commit is contained in:
@@ -11,6 +11,8 @@ You are the **DevOps Engineer** responsible for infrastructure, deployment, and
|
|||||||
- Configure Docker containerization for Job Forge prototype
|
- Configure Docker containerization for Job Forge prototype
|
||||||
- Handle server deployment and resource optimization
|
- Handle server deployment and resource optimization
|
||||||
- Manage AI API key security and configuration
|
- Manage AI API key security and configuration
|
||||||
|
- **MANDATORY**: All Docker files must be stored in `docker/` folder
|
||||||
|
- **MANDATORY**: Document deployment issues and solutions in `docs/lessons-learned/`
|
||||||
|
|
||||||
### 2. Deployment Pipeline for Prototyping
|
### 2. Deployment Pipeline for Prototyping
|
||||||
- Simple deployment pipeline for server hosting
|
- Simple deployment pipeline for server hosting
|
||||||
@@ -18,6 +18,8 @@ You are the **Senior Full-Stack Developer** responsible for implementing both Fa
|
|||||||
- Connect frontend to FastAPI backend APIs
|
- Connect frontend to FastAPI backend APIs
|
||||||
- Create intuitive job application management interfaces
|
- Create intuitive job application management interfaces
|
||||||
- Optimize for performance and user experience
|
- Optimize for performance and user experience
|
||||||
|
- **MANDATORY**: Follow clean project structure (only source code in `src/`)
|
||||||
|
- **MANDATORY**: Document any issues encountered in `docs/lessons-learned/`
|
||||||
|
|
||||||
## Technology Stack - Job Forge
|
## Technology Stack - Job Forge
|
||||||
|
|
||||||
@@ -18,6 +18,8 @@ You are the **QA Engineer** responsible for ensuring high-quality software deliv
|
|||||||
- Database RLS policy testing
|
- Database RLS policy testing
|
||||||
- AI service integration testing with mocks
|
- AI service integration testing with mocks
|
||||||
- Performance testing for concurrent users
|
- Performance testing for concurrent users
|
||||||
|
- **MANDATORY**: All test files must be in `tests/` directory only
|
||||||
|
- **MANDATORY**: Document test failures and solutions in `docs/lessons-learned/`
|
||||||
|
|
||||||
### 3. Manual Testing & Validation
|
### 3. Manual Testing & Validation
|
||||||
- Exploratory testing for job application workflows
|
- Exploratory testing for job application workflows
|
||||||
@@ -19,12 +19,14 @@ You are the **Technical Lead** responsible for architecture decisions, code qual
|
|||||||
- Review and approve major architectural changes
|
- Review and approve major architectural changes
|
||||||
- Ensure security best practices for job application data
|
- Ensure security best practices for job application data
|
||||||
|
|
||||||
### 3. Quality Assurance
|
### 3. Quality Assurance & Project Structure
|
||||||
- Python code review standards
|
- Python code review standards
|
||||||
- pytest testing strategy
|
- pytest testing strategy
|
||||||
- FastAPI performance requirements
|
- FastAPI performance requirements
|
||||||
- Multi-tenant security guidelines
|
- Multi-tenant security guidelines
|
||||||
- AI integration documentation standards
|
- AI integration documentation standards
|
||||||
|
- **MANDATORY**: Enforce clean project structure (only necessary files in root)
|
||||||
|
- **MANDATORY**: Document all issues in `docs/lessons-learned/` with solutions
|
||||||
|
|
||||||
## Technology Stack - Job Forge
|
## Technology Stack - Job Forge
|
||||||
|
|
||||||
@@ -10,15 +10,21 @@
|
|||||||
"deny": []
|
"deny": []
|
||||||
},
|
},
|
||||||
"project": {
|
"project": {
|
||||||
"name": "SaaS Development Project",
|
"name": "Job Forge Project",
|
||||||
"type": "web-application",
|
"type": "web-application",
|
||||||
"tech_stack": ["Node.js", "React", "TypeScript", "PostgreSQL"]
|
"tech_stack": [
|
||||||
|
"python3.12",
|
||||||
|
"fastapi",
|
||||||
|
"dash",
|
||||||
|
"mantine",
|
||||||
|
"postgresql"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"team": {
|
"team": {
|
||||||
"main_orchestrator": "CLAUDE.md",
|
"main_orchestrator": "CLAUDE.md",
|
||||||
"specialist_agents": [
|
"specialist_agents": [
|
||||||
"agents/technical-lead.md",
|
"agents/technical-lead.md",
|
||||||
"agents/full-stack-developer.md",
|
"agents/full-stack-developer.md",
|
||||||
"agents/devops.md",
|
"agents/devops.md",
|
||||||
"agents/qa.md"
|
"agents/qa.md"
|
||||||
]
|
]
|
||||||
@@ -35,7 +41,11 @@
|
|||||||
"default_agent": "CLAUDE.md"
|
"default_agent": "CLAUDE.md"
|
||||||
},
|
},
|
||||||
"development": {
|
"development": {
|
||||||
"environments": ["development", "staging", "production"],
|
"environments": [
|
||||||
|
"development",
|
||||||
|
"staging",
|
||||||
|
"production"
|
||||||
|
],
|
||||||
"testing_required": true,
|
"testing_required": true,
|
||||||
"code_review_required": true
|
"code_review_required": true
|
||||||
},
|
},
|
||||||
|
|||||||
64
CLAUDE.md
64
CLAUDE.md
@@ -332,10 +332,70 @@ Your specialized development team is ready to deliver the Job Forge AI-powered j
|
|||||||
|
|
||||||
**Start building your Job Forge prototype!** 🚀
|
**Start building your Job Forge prototype!** 🚀
|
||||||
|
|
||||||
# Documentation Structure
|
## Project Structure and Organization
|
||||||
All project documentation is centralized in the `docs/` folder. See [README.md](README.md) for complete documentation navigation.
|
|
||||||
|
### 📁 Clean Project Structure Requirements
|
||||||
|
**MANDATORY**: Only necessary files should be stored in the project root folder. All supporting files must be organized into appropriate subdirectories:
|
||||||
|
|
||||||
|
```
|
||||||
|
job-forge/
|
||||||
|
├── src/ # Source code only
|
||||||
|
├── tests/ # Test files only
|
||||||
|
├── docs/ # All documentation
|
||||||
|
├── docker/ # All Docker-related files
|
||||||
|
├── database/ # Database scripts and migrations
|
||||||
|
├── .env.example # Environment template
|
||||||
|
├── requirements-*.txt # Python dependencies
|
||||||
|
├── pytest.ini # Test configuration
|
||||||
|
└── README.md # Main project readme
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🔧 Docker Files Organization
|
||||||
|
All Docker-related files are stored in the `docker/` folder:
|
||||||
|
- `docker/docker-compose.yml` - Main orchestration file
|
||||||
|
- `docker/Dockerfile.backend` - Backend container definition
|
||||||
|
- `docker/Dockerfile.frontend` - Frontend container definition
|
||||||
|
|
||||||
|
**Usage**: Run `cd docker && docker compose up -d` to start the environment.
|
||||||
|
|
||||||
|
### 📚 Documentation Structure Requirements
|
||||||
|
All project documentation is centralized in the `docs/` folder:
|
||||||
|
- `docs/lessons-learned/` - **MANDATORY**: All project issues and solutions
|
||||||
|
- `docs/api_specification.md` - API documentation
|
||||||
|
- `docs/database_design.md` - Database schema and design
|
||||||
|
- `docs/development/` - Development guides and standards
|
||||||
|
|
||||||
|
### 📝 Lessons Learned Process
|
||||||
|
**MANDATORY**: For every issue encountered during development:
|
||||||
|
1. Create a new markdown file in `docs/lessons-learned/`
|
||||||
|
2. Use format: `###-issue-name.md` (where ### is sequential number)
|
||||||
|
3. Include: Issue name, description, error messages, root cause, solution, prevention strategy
|
||||||
|
4. Reference the lesson learned in relevant documentation
|
||||||
|
|
||||||
|
### 🏗️ Development Environment Setup
|
||||||
|
```bash
|
||||||
|
# 1. Clone and navigate to project
|
||||||
|
git clone <repository>
|
||||||
|
cd job-forge
|
||||||
|
|
||||||
|
# 2. Set up environment variables
|
||||||
|
cp .env.example .env
|
||||||
|
# Edit .env with your API keys
|
||||||
|
|
||||||
|
# 3. Start development environment
|
||||||
|
cd docker
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
# 4. Access applications
|
||||||
|
# Frontend: http://localhost:8501
|
||||||
|
# Backend: http://localhost:8000
|
||||||
|
# Database: localhost:5432
|
||||||
|
```
|
||||||
|
|
||||||
# Important Instructions
|
# Important Instructions
|
||||||
|
- **Clean Structure**: Only necessary files in project root
|
||||||
|
- **Docker Organization**: All Docker files in `docker/` folder
|
||||||
|
- **Lessons Learned**: Document all issues in `docs/lessons-learned/`
|
||||||
- Focus on Python/FastAPI backend implementation
|
- Focus on Python/FastAPI backend implementation
|
||||||
- Use Dash + Mantine for frontend components
|
- Use Dash + Mantine for frontend components
|
||||||
- Prioritize core job application workflows
|
- Prioritize core job application workflows
|
||||||
|
|||||||
15
README.md
15
README.md
@@ -14,11 +14,18 @@
|
|||||||
git clone https://github.com/yourusername/job-forge.git
|
git clone https://github.com/yourusername/job-forge.git
|
||||||
cd job-forge
|
cd job-forge
|
||||||
|
|
||||||
# Start development environment
|
# Set up environment variables
|
||||||
docker-compose up -d
|
cp .env.example .env
|
||||||
|
# Edit .env with your API keys (Claude, OpenAI, JWT secret)
|
||||||
|
|
||||||
# Access the application
|
# Start development environment
|
||||||
open http://localhost:8000
|
cd docker
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
# Access the applications
|
||||||
|
# Frontend: http://localhost:8501
|
||||||
|
# Backend API: http://localhost:8000
|
||||||
|
# Database: localhost:5432
|
||||||
```
|
```
|
||||||
|
|
||||||
## 📚 Documentation Navigation
|
## 📚 Documentation Navigation
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ services:
|
|||||||
- "5432:5432"
|
- "5432:5432"
|
||||||
volumes:
|
volumes:
|
||||||
- postgres_data:/var/lib/postgresql/data
|
- postgres_data:/var/lib/postgresql/data
|
||||||
- ./database/init.sql:/docker-entrypoint-initdb.d/init.sql
|
- ../database/init.sql:/docker-entrypoint-initdb.d/init.sql
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "pg_isready -U jobforge_user -d jobforge_mvp"]
|
test: ["CMD-SHELL", "pg_isready -U jobforge_user -d jobforge_mvp"]
|
||||||
interval: 30s
|
interval: 30s
|
||||||
@@ -21,8 +21,8 @@ services:
|
|||||||
|
|
||||||
backend:
|
backend:
|
||||||
build:
|
build:
|
||||||
context: .
|
context: ..
|
||||||
dockerfile: Dockerfile.backend
|
dockerfile: docker/Dockerfile.backend
|
||||||
container_name: jobforge_backend
|
container_name: jobforge_backend
|
||||||
ports:
|
ports:
|
||||||
- "8000:8000"
|
- "8000:8000"
|
||||||
@@ -34,7 +34,7 @@ services:
|
|||||||
- DEBUG=true
|
- DEBUG=true
|
||||||
- LOG_LEVEL=INFO
|
- LOG_LEVEL=INFO
|
||||||
volumes:
|
volumes:
|
||||||
- ./src:/app/src
|
- ../src:/app/src
|
||||||
depends_on:
|
depends_on:
|
||||||
postgres:
|
postgres:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
@@ -47,15 +47,15 @@ services:
|
|||||||
|
|
||||||
frontend:
|
frontend:
|
||||||
build:
|
build:
|
||||||
context: .
|
context: ..
|
||||||
dockerfile: Dockerfile.frontend
|
dockerfile: docker/Dockerfile.frontend
|
||||||
container_name: jobforge_frontend
|
container_name: jobforge_frontend
|
||||||
ports:
|
ports:
|
||||||
- "8501:8501"
|
- "8501:8501"
|
||||||
environment:
|
environment:
|
||||||
- BACKEND_URL=http://backend:8000
|
- BACKEND_URL=http://backend:8000
|
||||||
volumes:
|
volumes:
|
||||||
- ./src/frontend:/app/src/frontend
|
- ../src/frontend:/app/src/frontend
|
||||||
depends_on:
|
depends_on:
|
||||||
backend:
|
backend:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
49
docs/lessons-learned/001-dependency-version-conflicts.md
Normal file
49
docs/lessons-learned/001-dependency-version-conflicts.md
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
# Lesson Learned #001: Dependency Version Conflicts
|
||||||
|
|
||||||
|
## Issue Name
|
||||||
|
Dependency Version Conflicts in Requirements Files
|
||||||
|
|
||||||
|
## Date
|
||||||
|
2025-08-02
|
||||||
|
|
||||||
|
## Description
|
||||||
|
During project setup, encountered version conflicts with Python package dependencies:
|
||||||
|
- `pytest-dash==2.5.0` - Version did not exist in PyPI (max available: 2.1.2)
|
||||||
|
- `python-bcrypt==4.1.2` - Incorrect package name (should be `bcrypt==4.1.2`)
|
||||||
|
|
||||||
|
## Error Messages
|
||||||
|
```
|
||||||
|
ERROR: Could not find a version that satisfies the requirement pytest-dash==2.5.0
|
||||||
|
(from versions: 0.1.0, 0.1.1, 0.1.2, 0.1.3, 0.2.0rc1, 0.2.0rc2, 0.2.0rc3, 1.0.0, 1.0.1, 1.1.0, 2.0.0rc1, 2.0.0rc2, 2.0.0rc3, 2.0.0rc4, 2.0.0rc5, 2.0.0, 2.1.0, 2.1.1, 2.1.2)
|
||||||
|
|
||||||
|
ERROR: Could not find a version that satisfies the requirement python-bcrypt==4.1.2
|
||||||
|
(from versions: 0.3.1, 0.3.2)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Root Cause
|
||||||
|
1. Incorrect package versions specified without checking PyPI availability
|
||||||
|
2. Wrong package name used for bcrypt library
|
||||||
|
|
||||||
|
## Solution Applied
|
||||||
|
1. **Updated pytest-dash version**:
|
||||||
|
- Changed from `pytest-dash==2.5.0` to `pytest-dash==2.1.2`
|
||||||
|
- Verified latest available version on PyPI
|
||||||
|
|
||||||
|
2. **Fixed bcrypt package name**:
|
||||||
|
- Changed from `python-bcrypt==4.1.2` to `bcrypt==4.1.2`
|
||||||
|
- Used correct package name
|
||||||
|
|
||||||
|
## Files Modified
|
||||||
|
- `requirements-backend.txt` - Fixed bcrypt package name
|
||||||
|
- `requirements-frontend.txt` - Updated pytest-dash version
|
||||||
|
|
||||||
|
## Prevention Strategy
|
||||||
|
1. Always verify package versions exist on PyPI before adding to requirements
|
||||||
|
2. Use `pip search` or check PyPI website for correct package names
|
||||||
|
3. Consider using version ranges instead of exact pins for non-critical dependencies
|
||||||
|
4. Implement CI/CD checks to validate requirements files
|
||||||
|
|
||||||
|
## Impact
|
||||||
|
- ✅ All dependencies now install successfully
|
||||||
|
- ✅ Project setup process is streamlined
|
||||||
|
- ✅ Development environment can be started without version conflicts
|
||||||
77
docs/lessons-learned/002-project-structure-organization.md
Normal file
77
docs/lessons-learned/002-project-structure-organization.md
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
# Lesson Learned #002: Project Structure Organization
|
||||||
|
|
||||||
|
## Issue Name
|
||||||
|
Project Structure Organization and Clean Root Directory
|
||||||
|
|
||||||
|
## Date
|
||||||
|
2025-08-02
|
||||||
|
|
||||||
|
## Description
|
||||||
|
Initial project setup had Docker configuration files scattered in the root directory, making the project structure cluttered and harder to navigate. This violated clean project organization principles.
|
||||||
|
|
||||||
|
## Root Cause
|
||||||
|
- Docker files (Dockerfile.backend, Dockerfile.frontend, docker-compose.yml) were placed in project root
|
||||||
|
- No established guidelines for file organization
|
||||||
|
- Lack of mandatory documentation for project issues
|
||||||
|
|
||||||
|
## Solution Applied
|
||||||
|
1. **Created organized folder structure**:
|
||||||
|
```
|
||||||
|
job-forge/
|
||||||
|
├── src/ # Source code only
|
||||||
|
├── tests/ # Test files only
|
||||||
|
├── docs/ # All documentation
|
||||||
|
├── docker/ # All Docker-related files
|
||||||
|
├── database/ # Database scripts and migrations
|
||||||
|
├── .env.example # Environment template
|
||||||
|
├── requirements-*.txt # Python dependencies
|
||||||
|
├── pytest.ini # Test configuration
|
||||||
|
└── README.md # Main project readme
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Moved Docker files to dedicated folder**:
|
||||||
|
- Moved all Docker files to `docker/` directory
|
||||||
|
- Updated docker-compose.yml paths to reference parent directory (`../`)
|
||||||
|
- Updated project documentation to reflect new structure
|
||||||
|
|
||||||
|
3. **Created lessons-learned process**:
|
||||||
|
- Created `docs/lessons-learned/` folder
|
||||||
|
- Established mandatory documentation process for all issues
|
||||||
|
- Added sequential numbering system for lesson learned entries
|
||||||
|
|
||||||
|
## Files Modified
|
||||||
|
- `docker/docker-compose.yml` - Updated paths for new structure
|
||||||
|
- `CLAUDE.md` - Added project structure requirements and lessons learned process
|
||||||
|
- `.claude/agents/*.md` - Updated all agent files with structure requirements
|
||||||
|
- `README.md` - Updated quick start instructions
|
||||||
|
|
||||||
|
## New Mandatory Requirements
|
||||||
|
1. **Clean Root Directory**: Only essential files in project root
|
||||||
|
2. **Docker Organization**: All Docker files in `docker/` folder
|
||||||
|
3. **Lessons Learned**: Document every issue in `docs/lessons-learned/`
|
||||||
|
4. **Sequential Documentation**: Use numbered format (###-issue-name.md)
|
||||||
|
|
||||||
|
## Prevention Strategy
|
||||||
|
1. Establish clear folder structure guidelines in project documentation
|
||||||
|
2. Add project structure validation to CI/CD if implemented
|
||||||
|
3. Regular project structure reviews during development
|
||||||
|
4. Mandatory issue documentation process for all team members
|
||||||
|
|
||||||
|
## Usage Instructions
|
||||||
|
```bash
|
||||||
|
# Start development environment from docker folder
|
||||||
|
cd docker
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
# Access applications
|
||||||
|
# Frontend: http://localhost:8501
|
||||||
|
# Backend: http://localhost:8000
|
||||||
|
# Database: localhost:5432
|
||||||
|
```
|
||||||
|
|
||||||
|
## Impact
|
||||||
|
- ✅ Clean, organized project structure
|
||||||
|
- ✅ Easier navigation and maintenance
|
||||||
|
- ✅ Established process for documenting project issues
|
||||||
|
- ✅ Better adherence to software engineering best practices
|
||||||
|
- ✅ Updated all team documentation and agent instructions
|
||||||
@@ -12,7 +12,7 @@ psycopg2-binary==2.9.9
|
|||||||
# Authentication & Security
|
# Authentication & Security
|
||||||
python-jose[cryptography]==3.3.0
|
python-jose[cryptography]==3.3.0
|
||||||
passlib[bcrypt]==1.7.4
|
passlib[bcrypt]==1.7.4
|
||||||
python-bcrypt==4.1.2
|
bcrypt==4.1.2
|
||||||
|
|
||||||
# AI Services
|
# AI Services
|
||||||
anthropic==0.21.3
|
anthropic==0.21.3
|
||||||
|
|||||||
@@ -20,6 +20,6 @@ structlog==24.1.0
|
|||||||
|
|
||||||
# Development
|
# Development
|
||||||
pytest==8.0.2
|
pytest==8.0.2
|
||||||
pytest-dash==2.5.0
|
pytest-dash==2.1.2
|
||||||
black==24.2.0
|
black==24.2.0
|
||||||
isort==5.13.2
|
isort==5.13.2
|
||||||
Reference in New Issue
Block a user