Skip to main content

Getting Started for Developers

This guide will help you set up your development environment and start contributing to the Quran Knowledge Graph project.

Prerequisites

Before you begin, make sure you have the following installed:
  • Python 3.9+ - For backend development
  • Node.js 16+ - For frontend development
  • Docker - For containerized development
  • Git - For version control

Setting Up Your Development Environment

1. Clone the Repository

2. Backend Setup

Create a Python Virtual Environment

Install Dependencies

Set Up Environment Variables

Create a .env file in the root directory:

Run the Backend Server

The API will be available at http://localhost:8000.

3. Frontend Setup

Install Dependencies

Set Up Environment Variables

Create a .env.local file in the frontend directory:

Run the Frontend Development Server

The frontend will be available at http://localhost:3000.

4. Docker Setup (Alternative)

If you prefer to use Docker for development:
This will start:
  • The backend API at http://localhost:8000
  • The frontend at http://localhost:3000
  • The Kuzu database at localhost:5432

Project Structure

Development Workflow

1. Create a Feature Branch

2. Make Your Changes

Implement your changes, following the project’s coding standards.

3. Run Tests

4. Submit a Pull Request

  1. Push your changes to your fork
  2. Create a pull request against the main repository
  3. Fill out the pull request template with details about your changes
  4. Wait for code review and address any feedback

Working with the Graph Database

Connecting to Kuzu

Example Queries

Here are some example queries to help you get started:

Get a Verse by Reference

Find Verses by Topic

Find Words with the Same Root

Working with Vector Embeddings

Generating Embeddings

Vector Search in Cypher

API Documentation

The API documentation is available at http://localhost:8000/docs when running the development server. For more detailed API documentation, see the API Reference.

Getting Help

If you need help or have questions:
  1. Check the Technical Documentation
  2. Join our Discord community
  3. Open an issue on GitHub

Next Steps