mirror of
https://github.com/adityachandelgit/BookLore.git
synced 2025-07-22 00:35:25 +00:00
Add CONTRIBUTING.md with project setup and contribution guidelines
This commit is contained in:

committed by
Aditya Chandel

parent
2c72790334
commit
4899a6ccd3
194
CONTRIBUTING.md
Normal file
194
CONTRIBUTING.md
Normal file
@ -0,0 +1,194 @@
|
||||
# Contributing to Booklore
|
||||
|
||||
🎉 Thanks for your interest in contributing to **Booklore**, a modern, self-hostable digital library system for books and comics. Whether you're fixing bugs, adding features, improving documentation, or asking questions - your contribution matters!
|
||||
|
||||
---
|
||||
|
||||
## 📚 Overview
|
||||
|
||||
**Booklore** is a self-hostable platform designed to manage and read books and comics. It includes:
|
||||
|
||||
- **Frontend**: Angular 20, TypeScript, PrimeNG 19, Tailwind CSS
|
||||
- **Backend**: Java 21, Spring Boot 3.5
|
||||
- **Authentication**: Local JWT + optional OIDC (e.g. Authentik)
|
||||
- **Database**: MariaDB
|
||||
- **Deployment**: Docker-compatible, reverse proxy-ready
|
||||
|
||||
---
|
||||
|
||||
## 📦 Project Structure
|
||||
|
||||
```
|
||||
booklore/
|
||||
├── booklore-ui/ # Angular frontend
|
||||
├── booklore-api/ # Spring Boot backend
|
||||
├── assets/ # Shared assets
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Getting Started
|
||||
|
||||
1. **Fork the repository** on GitHub
|
||||
2. **Clone your fork** locally:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/adityachandelgit/BookLore.git
|
||||
cd booklore
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🧱 Local Development Setup
|
||||
|
||||
### 1. Prerequisites
|
||||
|
||||
- **Java 21+**
|
||||
- **Node.js 18+**
|
||||
- **MariaDB**
|
||||
- **Docker and Docker Compose**
|
||||
|
||||
---
|
||||
|
||||
### 2. Frontend Setup
|
||||
|
||||
To set up the Angular frontend:
|
||||
|
||||
```bash
|
||||
cd booklore-ui
|
||||
npm install
|
||||
ng serve
|
||||
```
|
||||
|
||||
The dev server runs at `http://localhost:4200/`.
|
||||
|
||||
> ⚠️ Use `--force` with `npm install` only as a last resort for dependency conflicts.
|
||||
|
||||
---
|
||||
|
||||
### 3. Backend Setup
|
||||
|
||||
#### a. Configure `application-dev.yml`
|
||||
|
||||
Create or edit `booklore-api/src/main/resources/application-dev.yml`:
|
||||
|
||||
```yaml
|
||||
app:
|
||||
path-book: '/path/to/booklore/books' # Directory for book/comic files
|
||||
path-config: '/path/to/booklore/config' # Directory for thumbnails, metadata, etc.
|
||||
|
||||
spring:
|
||||
datasource:
|
||||
driver-class-name: org.mariadb.jdbc.Driver
|
||||
url: jdbc:mariadb://localhost:3333/booklore?createDatabaseIfNotExist=true
|
||||
username: root
|
||||
password: Password123
|
||||
```
|
||||
|
||||
> 🔧 Replace `/path/to/...` with actual local paths
|
||||
|
||||
#### b. Run the Backend
|
||||
|
||||
```bash
|
||||
cd booklore-api
|
||||
./gradlew bootRun
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Testing
|
||||
|
||||
### Frontend
|
||||
|
||||
Run unit tests using:
|
||||
|
||||
```bash
|
||||
cd booklore-ui
|
||||
ng test
|
||||
```
|
||||
|
||||
### Backend
|
||||
|
||||
Run backend tests using:
|
||||
|
||||
```bash
|
||||
cd booklore-api
|
||||
./gradlew test
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Contributing Guidelines
|
||||
|
||||
### 💡 Bug Reports
|
||||
|
||||
- Check [existing issues](https://github.com/adityachandelgit/BookLore/issues)
|
||||
- Include reproduction steps, expected vs. actual behavior, and logs if possible
|
||||
|
||||
### 🌟 Feature Requests
|
||||
|
||||
- Clearly explain the use case and benefit
|
||||
- Label the issue with `feature`
|
||||
|
||||
### 🔃 Code Contributions
|
||||
|
||||
- Create a feature branch:
|
||||
|
||||
```bash
|
||||
git checkout -b feat/my-feature
|
||||
```
|
||||
|
||||
- For bug fixes:
|
||||
|
||||
```bash
|
||||
git checkout -b fix/my-fix
|
||||
```
|
||||
|
||||
- Follow code conventions, keep PRs focused and scoped
|
||||
- Link the relevant issue in your PR
|
||||
- Test your changes
|
||||
- Target the `master` branch when opening PRs
|
||||
|
||||
---
|
||||
|
||||
## 🧼 Code Style & Conventions
|
||||
|
||||
- **Angular**: Follow the [official style guide](https://angular.io/guide/styleguide)
|
||||
- **Java**: Use modern features (Java 17+), clean structure
|
||||
- **Format**: Use linters and Prettier where applicable
|
||||
- **UI**: Use Tailwind CSS and PrimeNG components consistently
|
||||
|
||||
---
|
||||
|
||||
## 📝 Commit Message Format
|
||||
|
||||
Follow [Conventional Commits](https://www.conventionalcommits.org/):
|
||||
|
||||
Examples:
|
||||
|
||||
- `feat: add column visibility setting to book table`
|
||||
- `fix: correct metadata locking behavior`
|
||||
- `docs: improve contributing instructions`
|
||||
|
||||
---
|
||||
|
||||
## 🙏 Code of Conduct
|
||||
|
||||
Please be respectful, inclusive, and collaborative. Harassment, abuse, or discrimination of any kind will not be tolerated.
|
||||
|
||||
---
|
||||
|
||||
## 💬 Community & Support
|
||||
|
||||
- Use [GitHub Discussions](https://github.com/adityachandelgit/BookLore/discussions)
|
||||
- Discord server: https://discord.gg/Ee5hd458Uz
|
||||
|
||||
---
|
||||
|
||||
## 📄 License
|
||||
|
||||
Booklore is open-source and licensed under the MIT License. See [`LICENSE`](./LICENSE) for details.
|
||||
|
||||
---
|
||||
|
||||
Happy contributing!
|
Reference in New Issue
Block a user