How to Contribute
Contributions to XaleDB are welcome! Whether you're fixing bugs, adding features, or improving documentation, your help is appreciated.
Getting Started
- Fork the Repository
git clone https://github.com/axdelafuen/xale-db.git
cd xale-db
- Set Up the Development Environment
# Build the project
cmake -B ./build
cmake --build ./build
# Run tests to ensure everything works
./build/xale-db-tests
- Create a Branch
git checkout -b feature/#issueN-your-feature-name
Development Guidelines
Code Style
- Follow C++17 standards
- Use meaningful variable and function names
- Add comments for complex logic
- Keep functions focused and modular
Project Structure
xale-db/
├── include/ # Header files
│ ├── Client/ # Client interfaces
│ ├── Core/ # Core utilities
│ ├── DataStructure/ # Data structures (B+ tree, tables)
│ ├── Engine/ # Database engine
│ ├── Execution/ # Query execution
│ ├── Net/ # Network/server components
│ ├── Query/ # Query parsing and tokenization
│ ├── Security/ # Authentication and security
│ └── Storage/ # Storage engines
├── src/ # Implementation files (mirrors include/)
├── apps/ # Application entry points
│ ├── cli/ # CLI client
│ ├── server/ # Server mode
│ └── debug/ # Debug mode
└── tests/ # Test files (mirrors include/)
Adding Features
- Make sure your feature is linked to an active issue. (find active issue here)
- Implement in the appropriate layer:
- Query parsing: Query/ directory
- Execution logic: Execution/ directory
- Storage operations: Storage/ directory
- Data structures: DataStructure/ directory
- ...
- Comment your code using javadoc style
- Write tests for your feature in the corresponding tests/ subdirectory
- Update documentation if adding new functionality
Testing
Before submitting changes:
# Build the project
cmake --build ./build
# Run all tests
./build/xale-db-tests
# Test with CLI client
./build/xale-db-server
./build/xale-db-cli // run queries using CLI
Submitting Changes
- Commit your changes
git add .
git commit -m "Brief description of your changes"
- Push to your fork
git push origin feature/your-feature-name
- Create a Pull Request
- Provide a clear description of your changes
- Reference any related issues
- Ensure all tests pass