Logbook is a documentation hub designed for developers and open-source projects. It syncs documentation directly from GitHub repositories and renders it into a clean, modern, and highly readable documentation website.
Live Demo: https://logbook-omkt.onrender.com
- GitHub Repository Sync — Automatically fetches and updates Markdown documentation from linked GitHub repositories.
- Rich Markdown Rendering — Parses Markdown and frontmatter to generate beautifully styled documentation pages.
- OAuth Authentication — Secure authentication and repository access using GitHub OAuth.
- Media Management — Cloudinary integration for scalable media storage and delivery.
- Automated CI/CD — Continuous integration and deployment with GitHub Actions and Render.
- Backend: Django 5.2, Python
- Database: PostgreSQL (Production), SQLite (Development)
- Styling: Tailwind CSS
- Static & Media: WhiteNoise, Cloudinary
- Infrastructure: GitHub Actions, Render
Follow these steps to run Logbook locally.
git clone https://github.com/opu-hossain/logbook.git
cd logbookUsing a virtual environment is recommended.
python -m venv .venvActivate it:
Linux/macOS
source .venv/bin/activateWindows
.venv\Scripts\activatepip install -r requirements.txtCreate a .env file in the project root (alongside manage.py) and configure the following variables.
| Variable | Description |
|---|---|
DEBUG |
Set to True for local development. |
SECRET_KEY |
Django secret key. |
DATABASE_URL |
Use sqlite:///db.sqlite3 for local development. |
CLOUDINARY_URL |
Cloudinary connection string. |
GITHUB_OAUTH_CLIENT_ID |
GitHub OAuth application client ID. |
GITHUB_OAUTH_CLIENT_SECRET |
GitHub OAuth application client secret. |
GITHUB_TOKEN_ENCRYPTION_KEY |
Secure 32-byte Base64 key used to encrypt stored OAuth tokens. |
GITHUB_OAUTH_REDIRECT_URI |
OAuth callback URL (for example: http://127.0.0.1:8000/users/oauth/callback/). |
python manage.py migrateTo access the Django admin interface:
python manage.py createsuperuserpython manage.py runserver --settings=config.settings.devThe application will be available at:
http://127.0.0.1:8000
Contributions are welcome and greatly appreciated. To maintain code quality and ensure a consistent development experience, all pull requests must pass the project's automated CI pipeline.
-
Fork the repository
-
Create a feature branch
git checkout -b feature/amazing-feature- Install development dependencies
If additional development tools are required:
pip install -r requirements.txt- Run Ruff
This project uses Ruff for linting and formatting.
ruff check --fix .Optionally, format the code:
ruff format .- Run Django checks
python manage.py check- Run the test suite
python manage.py test- Commit your changes
git commit -m "Add amazing feature"- Push your branch
git push origin feature/amazing-feature- Open a Pull Request
Please ensure:
- Code passes Ruff linting.
- All Django checks succeed.
- All tests pass.
- Your changes are clearly described.
Logbook is configured for automated deployment on Render.
- Application Hosting: Render
- Database: PostgreSQL
- Static Files: WhiteNoise
- Media Storage: Cloudinary
- CI/CD: GitHub Actions
Every push to the main branch triggers the GitHub Actions workflow, which:
- Installs project dependencies.
- Runs Ruff linting.
- Executes Django system checks.
- Runs the test suite.
- Triggers the Render deployment webhook if all checks pass successfully.
This project is licensed under the MIT License. See the LICENSE file for details.