A platform designed to handle complex knowledge management needs, particularly in research-intensive environments (e.g., academic and industry labs). This solution helps teams organize research data, insights, and documentation seamlessly over extended timelines and multiple collaborators.
This project tackles the chaotic processes of capturing and maintaining knowledge when working on complex, long-term research. It helps researchers:
- Absorb intricate topics more effectively.
- Reuse and build upon existing knowledge from past projects or other collaborators.
- Minimize redundant work and confusion during turnovers or team expansions.
- Deep Context Management: Focuses on capturing reasoning, methodology, and data—not just final outcomes.
- High Scalability: Extensible to different research domains and can integrate with existing data sources.
- Collaboration-Ready (Future Direction): Multiple contributors can collaborate on research, effortlessly merging results, insights, and references.
- AI-Assisted Workflows (Future Direction): Proposed features to refine documentation, summarize new findings, and suggest relevant references.
- High Turnover: Labs and teams often rotate students or staff, leading to lost knowledge.
- Cross-Disciplinary Complexity: Research continues to expand into multiple fields; a single hub for advanced insights is crucial.
- Time & Resource Savings: Effective documentation and retrieval cut down on repeated experiments or analyses.
.
├── backend
│ ├── build-backend.sh
│ ├── canvas
│ │ ├── e2e
│ │ │ ├── app.e2e-spec.ts
│ │ │ ├── canvas.e2e-spec.ts
│ │ │ ├── card.e2e-spec.ts
│ │ │ ├── jest-e2e.json
│ │ │ └── setup.ts
│ │ ├── README.md
│ │ ├── src
│ │ │ ├── app.controller.spec.ts
│ │ │ ├── app.controller.ts
│ │ │ ├── app.module.ts
│ │ │ ├── app.service.ts
│ │ │ ├── firstentity
│ │ │ │ ├── canvas.controller.spec.ts
│ │ │ │ ├── canvas.controller.ts
│ │ │ │ ├── canvas.service.spec.ts
│ │ │ │ ├── canvas.service.ts
│ │ │ │ ├── card.controller.spec.ts
│ │ │ │ ├── card.controller.ts
│ │ │ │ ├── card.service.spec.ts
│ │ │ │ ├── card.service.ts
│ │ │ │ ├── dto
│ │ │ │ │ ├── create-canvas.dto.ts
│ │ │ │ │ ├── create-card.dto.ts
│ │ │ │ │ ├── create-firstentity.dto.ts
│ │ │ │ │ ├── update-canvas.dto.ts
│ │ │ │ │ ├── update-card.dto.ts
│ │ │ │ │ └── update-firstentity.dto.ts
│ │ │ │ ├── entities
│ │ │ │ │ ├── canvas.entity.ts
│ │ │ │ │ ├── card.entity.ts
│ │ │ │ │ └── firstentity.entity.ts
│ │ │ │ ├── firstentity.controller.spec.ts
│ │ │ │ ├── firstentity.controller.ts
│ │ │ │ ├── firstentity.module.ts
│ │ │ │ ├── firstentity.service.spec.ts
│ │ │ │ └── firstentity.service.ts
│ │ │ ├── main.ts
│ │ │ ├── swagger.ts
│ │ │ └── update-cards.ts
│ │ └── test
│ │ ├── integration
│ │ │ └── firstentity
│ │ │ ├── canvas.integration.spec.ts
│ │ │ └── card.integration.spec.ts
│ │ └── setup.ts
│ ├── Dockerfile
│ ├── jest.config.js
│ ├── jest.integration.config.js
│ ├── logging_configuration
│ ├── nest-cli.json
│ ├── openapi.yaml
│ ├── package.json
│ ├── package-lock.json
│ ├── scripts
│ │ └── wait-for-it.sh
│ ├── tsconfig.build.json
│ └── tsconfig.json
├── build.sh
├── docker-compose.yml
├── frontend
│ ├── babel.config.js
│ ├── build-frontend.sh
│ ├── cypress
│ │ ├── cypress.config.js
│ │ └── e2e
│ │ ├── support
│ │ │ ├── commands.js
│ │ │ └── index.js
│ │ └── tests
│ │ ├── app.e2e.spec.js
│ │ ├── canvas.e2e.spec.js
│ │ └── card.e2e.spec.js
│ ├── Dockerfile
│ ├── jest.config.js
│ ├── package.json
│ ├── package-lock.json
│ ├── postcss.config.js
│ ├── public
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── logo192.png
│ │ ├── logo512.png
│ │ ├── manifest.json
│ │ └── robots.txt
│ ├── README.md
│ ├── scripts
│ │ └── wait-for-it.sh
│ ├── src
│ │ ├── App.js
│ │ ├── App.test.js
│ │ ├── components
│ │ │ ├── Canvas
│ │ │ │ ├── Canvas.jsx
│ │ │ │ └── Canvas.test.js
│ │ │ ├── Card
│ │ │ │ ├── SingleCard.jsx
│ │ │ │ └── SingleCard.test.js
│ │ │ └── ErrorBoundary.jsx
│ │ ├── index.css
│ │ ├── index.js
│ │ ├── models
│ │ │ ├── canvasModel.js
│ │ │ └── cardModel.js
│ │ ├── reportWebVitals.js
│ │ ├── services
│ │ │ ├── canvasService.js
│ │ │ ├── canvasService.test.js
│ │ │ ├── cardService.js
│ │ │ ├── cardService.test.js
│ │ │ └── __mocks__
│ │ │ ├── canvasService.js
│ │ │ └── cardService.js
│ │ ├── setupTests.js
│ │ └── __tests__
│ │ ├── components
│ │ │ ├── Canvas.integration.test.js
│ │ │ └── SingleCard.integration.test.js
│ │ ├── env.test.js
│ │ ├── models
│ │ │ ├── canvasModel.integration.test.js
│ │ │ └── cardModel.integration.test.js
│ │ └── services
│ │ ├── canvasService.integration.test.js
│ │ ├── cardService.integration.test.js
│ │ └── simpleMock.test.js
│ ├── ssm-policy.json
│ ├── tailwind.config.js
│ └── webpack.config.js
├── LICENSE
└── README.md
backend: Contains the NestJS-based server-side code, API definitions, and integration tests.frontend: Contains the React-based front-end code, with tests (Jest/Cypress) and build scripts.docker-compose.yml: Used to orchestrate both backend and frontend services for development or production.scripts: Various shell scripts for build, CI/CD, and environment provisioning.
- Node.js (latest LTS)
- Docker & Docker Compose (for container-based setup, optional)
- Clone the repository:
git clone https://github.com/your-username/your-repo.git
cd your-repo- Install dependencies for each service:
# In the backend folder
cd backend
npm install
# In the frontend folder
cd ../frontend
npm install-
Using Docker Compose (recommended):
docker-compose up --build
This will spin up both the frontend and backend containers.
-
Local Development (Node.js):
- Backend:
cd backend npm run start:dev - Frontend:
cd frontend npm start
By default, the frontend is on
http://localhost:3000and the backend onhttp://localhost:3001. - Backend:
- Fork the repo.
- Create a feature branch (
git checkout -b feature/my-feature). - Commit your changes (
git commit -m 'Add some feature'). - Push to the branch (
git push origin feature/my-feature). - Open a Pull Request.
Please open an issue to suggest improvements or report bugs.
This project is licensed under the Apache-2.0 license. Feel free to use, modify, and distribute it as permitted.
Thank you for your interest in this project!
For questions or collaboration, please reach out via GitHub Issues or contact me directly.