Added Open Notebook (#253)

* Added Open Notebook

* Remove duplicate GitLab CE entry from meta.json

* FIX-Validating meta.json against blueprint folders and logos

---------

Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
This commit is contained in:
Jainil Prajapati 🪐
2025-08-02 11:39:52 +05:30
committed by GitHub
parent b3348e6949
commit a551e99b8c
4 changed files with 159 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
version: "3.8"
services:
surrealdb:
image: surrealdb/surrealdb:v2
ports:
- 8000
volumes:
- ../files/surreal_data:/mydata
command: start --user root --pass root rocksdb:/mydata/mydatabase.db
pull_policy: always
user: root
open_notebook:
image: lfnovo/open_notebook:latest
ports:
- 8502
environment:
- SURREAL_URL=ws://surrealdb:8000/rpc
- SURREAL_USER=root
- SURREAL_PASSWORD=root
- SURREAL_NAMESPACE=open_notebook
- SURREAL_DATABASE=staging
depends_on:
- surrealdb
pull_policy: always
volumes:
- ../files/notebook_data:/app/data

View File

@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="240" height="240" viewBox="0 0 240 240" fill="none" xmlns="http://www.w3.org/2000/svg">
<!-- Gradient Definitions -->
<defs>
<linearGradient id="nodeGradient" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#bd34fe;stop-opacity:1" />
<stop offset="100%" style="stop-color:#41d1ff;stop-opacity:1" />
</linearGradient>
<linearGradient id="lineGradient" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#bd34fe;stop-opacity:0.3" />
<stop offset="100%" style="stop-color:#41d1ff;stop-opacity:0.3" />
</linearGradient>
</defs>
<!-- Connection Lines -->
<g class="connections">
<path d="M120 80L80 120" stroke="url(#lineGradient)" stroke-width="2"/>
<path d="M120 80L160 120" stroke="url(#lineGradient)" stroke-width="2"/>
<path d="M80 120L120 160" stroke="url(#lineGradient)" stroke-width="2"/>
<path d="M160 120L120 160" stroke="url(#lineGradient)" stroke-width="2"/>
<path d="M80 120L160 120" stroke="url(#lineGradient)" stroke-width="2"/>
</g>
<!-- Nodes -->
<g class="nodes">
<!-- Central Node -->
<circle cx="120" cy="80" r="20" fill="url(#nodeGradient)"/>
<circle cx="120" cy="80" r="24" stroke="url(#nodeGradient)" stroke-width="1" fill="none"/>
<!-- Left Node -->
<circle cx="80" cy="120" r="16" fill="url(#nodeGradient)"/>
<circle cx="80" cy="120" r="20" stroke="url(#nodeGradient)" stroke-width="1" fill="none"/>
<!-- Right Node -->
<circle cx="160" cy="120" r="16" fill="url(#nodeGradient)"/>
<circle cx="160" cy="120" r="20" stroke="url(#nodeGradient)" stroke-width="1" fill="none"/>
<!-- Bottom Node -->
<circle cx="120" cy="160" r="18" fill="url(#nodeGradient)"/>
<circle cx="120" cy="160" r="22" stroke="url(#nodeGradient)" stroke-width="1" fill="none"/>
</g>
<!-- Pulse Animation -->
<style>
@keyframes pulse {
0% { transform: scale(1); opacity: 0.8; }
50% { transform: scale(1.1); opacity: 1; }
100% { transform: scale(1); opacity: 0.8; }
}
.nodes circle {
animation: pulse 3s infinite ease-in-out;
}
.nodes circle:nth-child(2n) {
animation-delay: 1s;
}
.nodes circle:nth-child(3n) {
animation-delay: 2s;
}
</style>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1,59 @@
[variables]
main_domain = "${domain}"
surrealdb_port = "8000"
open_notebook_port = "8502"
[config]
[[config.domains]]
serviceName = "surrealdb"
port = 8000
host = "surrealdb-${main_domain}"
[[config.domains]]
serviceName = "open_notebook"
port = 8502
host = "${main_domain}"
[config.env]
SURREAL_URL = "ws://surrealdb:8000/rpc"
SURREAL_USER = "root"
SURREAL_PASSWORD = "root"
SURREAL_NAMESPACE = "open_notebook"
SURREAL_DATABASE = "staging"
# OPEN_NOTEBOOK_PASSWORD = "" # Uncomment and set to protect Open Notebook with a password for public hosting
# OPENAI_API_KEY = "" # API key for OpenAI integration
# ANTHROPIC_API_KEY = "" # API key for Anthropic integration
# GOOGLE_API_KEY = "" # API key for Google Gemini (best for long context and podcast generation)
# VERTEX_PROJECT = "" # Google Cloud project name for Vertex AI
# GOOGLE_APPLICATION_CREDENTIALS = "./google-credentials.json" # Path to Google credentials file
# VERTEX_LOCATION = "us-east5" # Vertex AI location
# MISTRAL_API_KEY = "" # API key for Mistral integration
# DEEPSEEK_API_KEY = "" # API key for DeepSeek integration
# OLLAMA_API_BASE = "http://10.20.30.20:11434" # Base URL for Ollama API
# OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1" # Base URL for OpenRouter
# OPENROUTER_API_KEY = "" # API key for OpenRouter
# GROQ_API_KEY = "" # API key for Groq integration
# XAI_API_KEY = "" # API key for xAI integration
# ELEVENLABS_API_KEY = "" # API key for ElevenLabs (used for podcast feature)
# VOYAGE_API_KEY = "" # API key for Voyage AI
# OPENAI_COMPATIBLE_BASE_URL = "http://localhost:1234/v1" # Base URL for OpenAI-compatible endpoints
# OPENAI_COMPATIBLE_API_KEY = "" # API key for OpenAI-compatible endpoints
# AZURE_OPENAI_API_KEY = "" # API key for Azure OpenAI
# AZURE_OPENAI_ENDPOINT = "" # Endpoint for Azure OpenAI
# AZURE_OPENAI_API_VERSION = "2024-12-01-preview" # API version for Azure OpenAI
# AZURE_OPENAI_DEPLOYMENT_NAME = "" # Deployment name for Azure OpenAI
# LANGCHAIN_TRACING_V2 = "true" # Enable LangChain tracing for debugging
# LANGCHAIN_ENDPOINT = "https://api.smith.langchain.com" # LangChain endpoint for debugging
# LANGCHAIN_API_KEY = "" # API key for LangChain debugging
# LANGCHAIN_PROJECT = "Open Notebook" # LangChain project name
# FIRECRAWL_API_KEY = "" # API key for Firecrawl (obtain at https://firecrawl.dev/)
# JINA_API_KEY = "" # API key for Jina (obtain at https://jina.ai/)
[[config.mounts]]
filePath = "/files/surreal_data"
content = ""
[[config.mounts]]
filePath = "/files/notebook_data"
content = ""

View File

@@ -3138,6 +3138,19 @@
},
"tags": ["analytics"]
},
{
"id": "open_notebook",
"name": "Open Notebook",
"version": "latest",
"description": "Open Notebook with SurrealDB for data storage and AI-powered features.",
"logo": "open_notebook.svg",
"links": {
"github": "https://github.com/lfnovo/open_notebook",
"website": "https://www.open-notebook.ai/",
"docs": "https://www.open-notebook.ai/get-started.html"
},
"tags": ["notebook", "ai", "database", "surrealdb"]
},
{
"id": "booklore",
"name": "Booklore",