GrapeVine is a collaboration platform designed to help developers find and join programming projects. It enables users to showcase their skills, create projects, and find collaborators with complementary skill sets.
- User Management: Register accounts, update profiles, and showcase programming skills
- Project Creation: Create projects and specify required collaborators
- Skill Matching: Find projects that match your skill set
- Collaboration System: Express interest in projects and manage collaborators
- Backend: FastAPI, Python 3.12
- Database: SQLite (development), PostgreSQL (production ready)
- Authentication: JWT token-based auth
- Testing: Pytest with 30+ test cases
- Python 3.8+ (3.12 recommended)
- pip (Python package manager)
- Git
-
Clone the repository:
git clone https://github.com/ginio15/grapevine.git cd grapevine -
Create a virtual environment:
python -m venv env # On Windows env\Scripts\activate # On macOS/Linux source env/bin/activate
-
Install dependencies:
pip install -r requirements.txt
-
Initialize the database:
python -m services.init_db
-
Start the server:
uvicorn main:app --reload
-
The API will be available at http://localhost:8000
- API Documentation: http://localhost:8000/docs
- Alternative API Documentation: http://localhost:8000/redoc
POST /auth/login- Login and get access token
POST /users/register- Register a new userPOST /users/reset-password- Reset passwordPOST /users/add-skill- Add a programming skillDELETE /users/remove-skill- Remove a skillGET /users/stats- Get user statisticsGET /users/me- Get own user profile
POST /projects/create-project- Create a new projectDELETE /projects/delete-project- Delete a projectPOST /projects/complete-project- Mark project as completedPOST /projects/express-interest- Express interest in a projectPOST /projects/respond-interest- Accept or decline interest requestsGET /projects/open-seats- List projects with open seats
Run the test suite to ensure everything is working:
pytestFor more detailed test output:
pytest -vGrapeVine/
├── main.py # FastAPI application entry point
├── models.py # Pydantic models for request/response validation
├── requirements.txt # Project dependencies
├── setup.py # Setup script for easy installation
├── .gitignore # Files to exclude from version control
├── README.md # Project documentation
│
├── routes/ # API route definitions
│ ├── auth.py # Authentication endpoints
│ ├── projects.py # Project management endpoints
│ └── users.py # User management endpoints
│
├── services/ # Core backend services
│ ├──auth/
│ │ ├── auth_config.py # Authentication configuration
│ │ └── security.py # Password hashing and security functions
│ │
│ └──db/
│ ├── db_config.py # Database configuration
│ ├── db_models.py # SQLAlchemy ORM models
│ └── init_db.py # Database initialization script
│
│
└── test/ # Test suite
├── test_auth.py # Authentication tests
├── test_main.py # Main application tests
├── test_projects.py # Project endpoint tests
├── test_users.py # User endpoint tests
├── test_validation.py # Input validation tests
├── conftest.py # Configure Pytest
└── utils/
├── debug_db.py # Database debugging utility
└── clear_skills.py # Utility to clear skills
- Fork the repository
- Create your feature branch:
git checkout -b feature-name - Commit your changes:
git commit -m 'Add some feature' - Push to the branch:
git push origin feature-name - Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.