{"id":41989,"library":"spine-framework","title":"Spine Framework","description":"Spine is an enterprise application framework built on Supabase, Netlify, and React. At version 0.1.60, it is in early active development with a release cadence driven by GitHub pushes. It differentiates by tightly integrating with Supabase for backend (auth, realtime, storage), Netlify for serverless deployment, and React for UI, while also requiring specific editor dependencies like TipTap and Lowlight for rich text. Works with Node >=18 and supports both React 18 and 19.","status":"active","version":"0.1.60","language":"javascript","source_language":"en","source_url":"https://github.com/art-mojo-admin/spine","tags":["javascript","spine","framework","supabase","netlify","react","enterprise","agentic"],"install":[{"cmd":"npm install spine-framework","lang":"bash","label":"npm"},{"cmd":"yarn add spine-framework","lang":"bash","label":"yarn"},{"cmd":"pnpm add spine-framework","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Required for Netlify serverless function integration","package":"@netlify/functions","optional":false},{"reason":"UI framework component","package":"react","optional":false},{"reason":"DOM rendering for React","package":"react-dom","optional":false},{"reason":"Client-side routing","package":"react-router-dom","optional":false},{"reason":"Build tool and dev server","package":"vite","optional":false},{"reason":"Rich text editor integration (React bindings)","package":"@tiptap/react","optional":false},{"reason":"Default Tiptap extensions","package":"@tiptap/starter-kit","optional":false},{"reason":"Syntax highlighting in code blocks","package":"@tiptap/extension-code-block-lowlight","optional":false},{"reason":"Placeholder for empty editor","package":"@tiptap/extension-placeholder","optional":false},{"reason":"Syntax highlighting library for code blocks","package":"lowlight","optional":false},{"reason":"Alternative syntax highlighting library","package":"highlight.js","optional":false}],"imports":[{"note":"ESM-only; CommonJS require not supported.","wrong":"const SpineApp = require('spine-framework')","symbol":"SpineApp","correct":"import { SpineApp } from 'spine-framework'"},{"note":"Named export, not default.","wrong":"import useAuth from 'spine-framework'","symbol":"useAuth","correct":"import { useAuth } from 'spine-framework'"},{"note":"Db wrapper around Supabase client.","wrong":"import { supabase } from 'spine-framework'","symbol":"db","correct":"import { db } from 'spine-framework'"}],"quickstart":{"code":"import { SpineApp } from 'spine-framework';\nimport { createRoot } from 'react-dom/client';\n\nconst config = {\n  supabaseUrl: process.env.SUPABASE_URL ?? '',\n  supabaseAnonKey: process.env.SUPABASE_ANON_KEY ?? '',\n  netlifyToken: process.env.NETLIFY_TOKEN ?? '',\n};\n\nfunction App() {\n  return (\n    <SpineApp config={config}>\n      <h1>Welcome to Spine</h1>\n    </SpineApp>\n  );\n}\n\nconst root = createRoot(document.getElementById('root')!);\nroot.render(<App />);","lang":"typescript","description":"Initializes a Spine application with Supabase and Netlify configuration, wrapping the app in a provider."},"warnings":[{"fix":"Install all listed peer dependencies in your project.","message":"All peer dependencies must be installed manually as Spine does not auto-install them.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Replace imports from 'spine-framework/api' with 'spine-framework/server'.","message":"In version 0.1.0, the api module was renamed to server.","severity":"breaking","affected_versions":"<0.1.0"},{"fix":"Use <SpineApp> component instead of createSpine().","message":"The createSpine function is deprecated in favor of SpineApp component.","severity":"deprecated","affected_versions":">=0.1.20"},{"fix":"Ensure your project uses React 18.x or 19.x.","message":"Requires React 18 or 19; may not work with custom React builds.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Upgrade Node.js to version 18 or higher.","message":"Node.js <18 is not supported due to native fetch requirements.","severity":"gotcha","affected_versions":">=0.0.0"}],"env_vars":null,"search_vec":"'0.1.60':17 '18':68,73 '19':75 'activ':22 'agent':83 'also':53 'applic':7 'auth':41 'backend':40 'built':9 'cadenc':27 'depend':57 'deploy':47 'develop':23 'differenti':33 'driven':28 'earli':21 'editor':56 'enterpris':6,82 'framework':2,8,78 'github':30 'integr':36 'javascript':76 'like':58 'lowlight':61 'netlifi':12,44,80 'node':67 'push':31 'react':14,49,72,81 'realtim':42 'releas':26 'requir':54 'rich':63 'serverless':46 'specif':55 'spine':1,3,77 'storag':43 'supabas':11,38,79 'support':70 'text':64 'tight':35 'tiptap':59 'ui':51 'version':16 'work':65","created_at":"2026-06-04T18:55:04.983544+00:00","updated_at":"2026-06-04T18:55:04.983544+00:00","problems":[{"fix":"Run npm install spine-framework @netlify/functions react react-dom react-router-dom vite @tiptap/react @tiptap/starter-kit @tiptap/extension-code-block-lowlight @tiptap/extension-placeholder lowlight highlight.js","cause":"Package not installed or peer dependencies missing.","error":"Module not found: Error: Can't resolve 'spine-framework'"},{"fix":"Provide both supabaseUrl and supabaseAnonKey in the config object passed to SpineApp.","cause":"Missing Supabase URL or anon key in configuration.","error":"Uncaught TypeError: Cannot read properties of undefined (reading 'supabase')"},{"fix":"Set the NETLIFY_TOKEN environment variable or config property.","cause":"Missing Netlify token for serverless function deployment.","error":"Error: Netlify functions not enabled. Did you set NETLIFY_TOKEN?"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/art-mojo-admin/spine#readme","github":"https://github.com/art-mojo-admin/spine","docs":null,"changelog":null,"pypi":null,"npm":"spine-framework","openapi_spec":null,"status_page":null,"smithery":null,"categories":["devops","productivity"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-04","next_check":"2026-09-02","install_tag":null}}