{"id":14155191,"url":"https://github.com/bradenmacdonald/neolace","last_synced_at":"2025-08-06T00:33:35.602Z","repository":{"id":162606703,"uuid":"438045310","full_name":"bradenmacdonald/neolace","owner":"bradenmacdonald","description":"The next-generation knowledge graph platform.","archived":true,"fork":false,"pushed_at":"2023-09-13T19:46:33.000Z","size":10795,"stargazers_count":23,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-30T01:38:18.603Z","etag":null,"topics":["deno","knowledge-graph","neo4j","nextjs","wiki"],"latest_commit_sha":null,"homepage":"https://www.neolace.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bradenmacdonald.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2021-12-13T22:35:44.000Z","updated_at":"2024-09-29T21:01:17.000Z","dependencies_parsed_at":null,"dependency_job_id":"6337074b-ab03-43ea-89ac-774668ca366d","html_url":"https://github.com/bradenmacdonald/neolace","commit_stats":null,"previous_names":["bradenmacdonald/neolace"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradenmacdonald%2Fneolace","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradenmacdonald%2Fneolace/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradenmacdonald%2Fneolace/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradenmacdonald%2Fneolace/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bradenmacdonald","download_url":"https://codeload.github.com/bradenmacdonald/neolace/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228821397,"owners_count":17977164,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deno","knowledge-graph","neo4j","nextjs","wiki"],"created_at":"2024-08-17T08:02:25.870Z","updated_at":"2024-12-09T02:31:01.564Z","avatar_url":"https://github.com/bradenmacdonald.png","language":"TypeScript","funding_links":[],"categories":["wiki"],"sub_categories":[],"readme":"# neolace\n\nThis monorepo contains the code for [Neolace](https://neolace.com).\n\nNeolace is a tool for managing knowledge collaboratively - either privately\nwithin an organization or publicly online. It's a combination of a wiki, a\nknowledge graph, a content management system, and a version control system. The\nfocus is on making it easy to input, connect, and organize, and explore\nknowledge. Knowledge is not just facts or data, but also articles, explanations,\ndiscussions, and images.\n\nNeolace uses the [Neo4j Graph Database](https://neo4j.com/) as its primary\ndatastore.\n\n## Screenshots\n\nViewing an entry:\n\n![a screenshot of reading an entry](./readme-screenshot-viewing.png)\n\nCreating a new entry using the UI:\n\n![a screenshot of the editor interface](./readme-screenshot-editor.png)\n\n## What's in the monorepo\n\nNeolace is 100% written in TypeScript. Here's how the code is organized:\n\n* __backend__ - The Neolace backend, a Deno server that implements Neolace.\n  - `backend/neolace/core` - Core data models and functionality used by all other parts of the code. This defines the key entities like `Site`, `Entry`, `EntryType`, `Property`, and how they relate to each other. The core provides permissions-related functionality but generally doesn't enforce permissions. Permissions are enforced in the `api` and `lookup` code.\n  - `backend/neolace/core/lookup` - The implementation of our lookup language, used to query data.\n  - `backend/neolace/deps` - Dependencies used by our backend. We try to keep this fairly minimal to avoid the problems that come with having too many dependencies. The \"main\" dependency is [Vertex Framework](https://github.com/neolace-dev/vertex-framework) which provides a type-safe interface to the Neo4j database.\n  - `backend/neolace/plugins` - Backend plugins which can extend neolace's functionality. For example, our search experience (powered by TypeSense) is implemented as a plugin.\n  - `backend/neolace/rest-api` - The REST API, which exposes the `core` and its `plugins` via REST.\n* __frontend__ - The Neolace frontend, a Next.js React application that implements our standard user interface. Plugins and theme settings can be used to customize the UI, or you can replace it entirely with a custom frontend.\n* __neolace-admin__ - The Neolace Admin Tool, a command-line script that you can use for administrative purposes like importing or exporting data.\n* __neolace-sdk__ - The Neolace Software Development Kit (SDK), which provides TypeScript interfaces for all of the Neolace entities. This code is shared by the frontend and the backend. It also contains an API client which makes it really easy to use the REST API.\n* __sites__ - Example sites/content.\n\n## Developer quickstart\n\nHere's how to run Neolace on your local machine as a developer.\n\nNote: Currently, Neolace development assumes you are using VS Code. If you're\ninterested in contributing support for another dev environment, open an issue\non GitHub and let us know.\n\n1. You will need to have a recent version of\n    [Deno](https://deno.land/),\n    [Node.js](https://nodejs.org/en/), and\n    [Docker](https://www.docker.com/) installed on your computer. \n1. Open this project (`neolace-app.code-workspace`) in VS Code\n1. Terminal \u003e Run Task \u003e 🗄️ Run Neolace Database Servers\n1. Terminal \u003e Run Task \u003e ♻️ Erase Database and create default sites (you only need to run this the first time you start Neolace)\n1. Terminal \u003e Run Task \u003e 🚀 Run Backend\n1. Terminal \u003e Run Task \u003e 🚀 Run Frontend\n1. See it at http://home.local.neolace.net:5555/\n\n## Is Neolace open source?\n\nNeolace is _partially_ open source. The SDK and most plugins are open source\nunder the MIT license. Many parts of the code, including the entire\n[Vertex Framework](https://github.com/neolace-dev/vertex-framework), are also\nopen source under the MIT license. However, the majority of the code for Neolace\nitself (backend and frontend) is not technically open source -- rather, the\nsource code is available under the\n[Business Source License](https://mariadb.com/bsl11/). Under the BSL, you may\n\"copy, modify, create derivative works, redistribute, and make non-production\nuse of the Licensed Work\"; we also allow limited personal use in production.\nWhat's more, any given version of it is guaranteed to become fully open source\n(under the Mozilla Public License) after four years, so you can be certain that\nthe Neolace platform cannot ultimately disappear or fundamentally change in ways\nthat jeoparize your business. However, you may not use Neolace in production\nwithout a license from us. (Free licenses may be available for startups,\nnon-profits, or other similar situations - please don't hesitate to contact us.)\n\n## Hosting in production\n\nFor production use, we recommend using our cloud hosting on neolace.com. We can\nset you up with affordable shared-database hosting that will be _much_ better\nvalue than hosting it yourself, or enterprise hosting (dedicated DB, private\ncloud, on premises, etc.). But if you like to go it your own, or you want to\n_sell_ Neolace hosting as a service, we're happy to sell you a license and\nsupport you with our production deployment kit that includes Terraform code,\nbest practices, and support. Whatever path you pick, please get in touch with us\nat team@neolace.com and we'll give you a hand.\n\n## Troubleshooting (Development Issues)\n\n### Neo4j fails to start: `Neo4j is already running`\n\nIf you see this error, you can fix by running `docker compose up neo4j --force-recreate`\n\n(Or `neo4j-test` if it's the test database server that failed.)\n\n## Other How-To Guides for Developers\n\n### How to analyze the frontend bundle's size\n\nFrom the `frontend` folder, while the frontend is not running, run:\n\n    ANALYZE=true npm run build\n\n### How to test imgproxy locally\n\nIn production, we usually serve images via a CDN which sends its requests to\n[imgproxy](https://imgproxy.net/) to generate image thumnbnails. In development,\nthis feature is disabled as we don't need to be running imgproxy and don't have\na CDN to cache the result. However, you can test it in development if that's\nuseful:\n\n1. Copy the imgproxy settings from `docker-compose.yml` to `docker-compose.override.yml` and uncomment them.\n1. In `frontend/.env.local`, set `NEXT_PUBLIC_IMGPROXY_ENABLED=true`\n1. In `backend/neolace/app/config.ts`, set `objStorePublicUrlPrefixForImages` to `http://localhost:5558`\n1. Restart the database servers (docker) and the frontend.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbradenmacdonald%2Fneolace","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbradenmacdonald%2Fneolace","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbradenmacdonald%2Fneolace/lists"}