This repository contains the Raven Development Operations marketing / demo website, plus an optional local assistant backend used to power the on‑site chatbot and contact flow enrichment. It is built with React, React Router, Tailwind CSS, Framer Motion, and Netlify serverless functions for Calendly integration.
- Multi‑page marketing site (Home, Services, Portfolio, Blog, Pricing, About, Contact, Legal, 404).
- Animated hero, testimonial and “trusted by” sections showcasing prior work and capabilities.
- Interactive demo quizzes that walk through different engagement types and scenarios.
- On‑site chatbot (“raven” assistant) that can use a local LLaMA model and a small knowledge base.
- Contact form integrated with Netlify forms and Calendly scheduling links.
- Netlify Function to generate Calendly scheduling URLs based on meeting type.
- Frontend: React 18, React Router,
react-scripts(Create React App), Tailwind CSS. - UI / UX: Framer Motion animations, Heroicons, custom layout and theming.
- Assistant backend (optional): Node.js + Express (
OpenAuxiliumsubproject) withnode-llama-cpp. - Scheduling: Calendly API via a Netlify Function (
netlify/functions/create-calendly-link.js). - Deployment: Netlify static hosting + Functions, SPA routing configured via
netlify.toml.
src/pages/– Route components such asHome.jsx,Services.jsx,Portfolio.jsx,Blog.jsx,Contact.jsx,Pricing.jsx,Legal.jsx, etc.components/– Reusable UI components (hero sections, pricing tables, layout, chatbot, quizzes, etc.).quiz/– Demo quiz flows for different engagement types (testing, dashboards, training tools, etc.).hooks/– Shared React context/state (e.g., search, theming).assets/– Images and brand assets used across the site.
public/– Static assets,index.html,manifest.json,og-image.svg,robots.txt,sitemap.xml.netlify/– Netlify Functions (currentlycreate-calendly-link.jsfor Calendly integration).OpenAuxilium/– Optional assistant backend that powers the on‑site chatbot and contact enrichment.
- Node.js 18+
- npm (bundled with most Node.js installs)
npm installnpm startThis starts the React app at http://localhost:3000.
The chatbot and contact enrichment will try to reach the assistant backend at http://localhost:5050 unless configured otherwise.
npm run buildThe production build is emitted to the build/ directory and is what Netlify serves in production.
The optional assistant backend lives in the OpenAuxilium/ subdirectory.
It provides:
- A chat API (
/chat) for the on‑site chatbot. - Session management and light user metadata storage.
- Contact enrichment endpoint (
/contact-link) used by the contact form. - Local model integration via
node-llama-cpp(no external LLM API required).
-
Copy
.env.exampleinsideOpenAuxilium/to.envand adjust values:PORT– Port for the assistant API (default5050).CORS_ORIGIN– Origin that is allowed to call the API (usuallyhttp://localhost:3000in development).LLAMA_MODEL_PATH,LLAMA_CONTEXT_SIZE,LLAMA_MAX_TOKENS– Local LLaMA model configuration.- Calendly values (if you want the assistant to reason about bookings) such as
CALENDLY_PAT,CALENDLY_USER_URI, etc.
-
In the frontend, set the base URL the chatbot and contact page should use by defining
REACT_APP_OPENAUXILIUM_URL:-
For local development, create
.env.localin the project root with:REACT_APP_OPENAUXILIUM_URL=http://localhost:5050
-
From the repo root:
cd OpenAuxilium
npm install
npm run devThis will start the assistant server (default http://localhost:5050).
With both the React app and the assistant running, the chatbot and contact form enrichment will be fully wired up.
Scheduling links are generated via the Netlify Function netlify/functions/create-calendly-link.js.
It can either:
- Use explicitly configured URLs per meeting type (Zoom, Teams, Google, phone), or
- Call the Calendly API to discover event types and optionally mint ephemeral scheduling links.
Configure these in your Netlify site (or local Netlify dev environment):
CALENDY_TOKENorCALENDLY_TOKEN– Calendly PAT used for API calls.- Optional mapping overrides:
CALENDY_URL_ZOOM/CALENDLY_URL_ZOOMCALENDY_URL_TEAMS/CALENDLY_URL_TEAMSCALENDY_URL_GOOGLE/CALENDLY_URL_GOOGLECALENDY_URL_PHONE/CALENDLY_URL_PHONECALENDY_URL_DEFAULT/CALENDLY_URL_DEFAULT
If no token is configured, the function simply returns the configured default URL.
Netlify is configured via netlify.toml:
publish = "build"– serves the contents of the React production build.functions = "netlify/functions"– directory for Netlify Functions.- SPA routing is enabled by redirecting all non‑function paths to
/index.html.
In a typical setup you would:
- Push this repo to GitHub (or another supported provider).
- Connect the repo in Netlify.
- Use
npm run buildas the Build command. - Set the environment variables described above (Calendly, optional assistant URL, etc.).
This project uses the default Create React App testing setup (@testing-library/react, @testing-library/jest-dom).
To run tests:
npm testYou can add component tests under src/__tests__/ following the existing patterns.
This project is provided under a NO LICENSE / all‑rights‑reserved model for the original Raven Development Operations code and content in this repository. See LICENSE for details. Third‑party dependencies remain under their own respective licenses.
- Secrets (Calendly tokens, model paths, etc.) should be stored in environment variables and never committed.
- The site content and copy are tailored to Raven Development Operations messaging and may assume context about DevOps, CI/CD, observability, and fractional DevOps engagements.