Skip to content

mojivalipour/daneshbaz

Repository files navigation

DaneshBaz — Research Version Control Platform

A monorepo for DaneshBaz: a collaborative research and document versioning platform. Aka a "GitHub for Research Papers".

This repository contains the web frontend, the GraphQL backend, a notification consumer service, and deployment/monitoring examples.

Contents

  • frontend/ — Next.js application (React) with UI components, pages and GraphQL client code.
  • backend/ — NestJS GraphQL API, domain logic, and data models.
  • notification/ — NestJS consumer service for background notifications.
  • stack/ — Docker Compose files for development and production orchestration.
  • monitoring-compose.yml — Prometheus + Grafana compose for monitoring.
  • Submodules:
    • latexml/ — LaTeXML plugin (git submodule)
    • diff-match-patch/ — diff-match-patch (git submodule)

Open Letter and Acknowledgments

Hi everyone,

I’m Mojtaba Valipour, the Project Manager and Designer of the DaneshBaz platform. I started this project around 2021 with the goal of creating a collaborative research platform that enables researchers to manage their documents and collaborate effectively — even without mutual trust. My vision was to make global collaboration easier, especially in cases where working with new or unknown collaborators is challenging. Too often, if one person acts dishonestly, there’s no way to trace responsibility, and everyone involved ends up affected. DaneshBaz was designed to change that.

This project has been a collective effort, and I want to express my sincere gratitude to all those who contributed — including, but not limited to, Mehdi Moozeh (in particular as you can see he indeed contributed a lot), Ethel Zlotnik (UI/UX designer), Farzad Tabashir, Min Kang, Bhavik Makhija, Parsa Nasiri Mehr, Alexander Sharp, Goncha Sadayeva and many others who supported us along the way.

The development of DaneshBaz was self-funded, with more than $15,000 which I invested in servers, domain names, and development time. I still believe there is significant potential in this idea and hope to see it continue to evolve. However, looking back, I believe our decision to build the system entirely from scratch was not the most efficient approach.

I would love to see this project grow further and welcome any form of collaboration or continuation by others who share the same vision. As of today (November 09, 2025), the code is open-source under the MIT License, and I encourage anyone interested to explore it, contribute, or build upon it. I still feel the need for a platform like DaneshBaz, and I hope others will find value in it as well.

Thank you all for being part of this journey.

Best, Mojtaba Valipour Project Manager & Designer, DaneshBaz.com

Highlights

  • Full-text and LaTeX-aware editor (Monaco) in the frontend.
  • GraphQL API with resolvers and domain services in the backend.
  • Notification consumers and message queue integration.
  • Dockerfiles for each service and example compose files to run the stack.

Quick links

  • Frontend: frontend/
  • Backend: backend/
  • Notification: notification/
  • Orchestration: stack/
  • Monitoring compose: monitoring-compose.yml
  • Submodules: .gitmodules

Getting started (developer machine)

Prerequisites

  • Node.js (recommended LTS)
  • yarn or pnpm
  • Docker (optional, for compose runs)
  • Git (for submodules)

Clone and initialize submodules

git clone --recursive <repo-url>
cd daneshbaz
git submodule update --init --recursive

Frontend (local)

cd frontend
yarn install
yarn dev

Open http://localhost:3000

Backend (local)

cd backend
yarn install
# copy or create .env from .env.example and set DB/redis/rabbitmq
yarn start:dev

Notification service (local)

cd notification
yarn install
# copy or create .env from .env.example
yarn start:dev

Run with Docker / Compose

Example compose files live in stack/ for development and production. A monitoring compose (Prometheus + Grafana) is provided in monitoring-compose.yml.

Testing

  • Backend e2e tests: backend/test/ (jest-e2e.json)
  • Notification contains example tests in notification/test/

Project structure notes

  • Backend domain: backend/src/paper/, backend/src/user/, backend/src/auth/.
  • Frontend pages: frontend/pages/, UI components in frontend/ui/components/.
  • GraphQL schema: backend/schema.gql and frontend codegen configuration .graphql-let.yml.

Demonstration

Please check the assets folder for screenshots and demo videos including usage examples, and bugs available in the system.

Contribution

  • Please feel free to use this repository anyhow you like. Forks and contributions are welcome. Let us know if you have built anything powerful with it! We would love to hear from you.

License

MIT License. See LICENSE file for details.

About

Project Daneshbaz: Open Research, Open Problem, Open Ideas

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages