A modern React TypeScript application for creating professional specification and memory documentation with an intuitive step-by-step wizard interface. Arcana helps teams and individuals create comprehensive, well-structured documentation efficiently.
- Project Specification - Complete technical specification and requirements
- Project Memory - Living documentation of decisions, lessons learned, and project knowledge
- AI Copilot Guide - GitHub Copilot integration guide with context prompts
Ready-to-use templates for creating Arcana-compatible documentation:
- Document Templates - Comprehensive guide to using Arcana templates
- Memory Document Template - Template for organizational knowledge documentation
- Spec Document Template - Template for technical specification documentation
- Quick Reference - Essential formatting rules and AI prompt examples
These templates are specifically designed for AI agent collaboration. Use prompts like:
- "Update my spec docs with the new API requirements"
- "Add this decision to my memory document"
- "Document this lesson learned in the proper format"
The standardized format ensures your AI-generated updates will import seamlessly into Arcana.
-
Specification Documents: Technical and functional requirements documentation
- Project Overview
- Functional Requirements
- Technical Architecture
- API Documentation
- Non-Functional Requirements
- Project Roadmap
-
Memory Documents: Organizational knowledge and decision documentation
- Decision Log
- Glossary & Terms
- Meeting Notes
- Lessons Learned
- Onboarding Guide
- π― Step-by-step wizard interface - Guided documentation creation process
- πΎ Auto-save functionality - Progress is automatically saved to localStorage
- π€ Markdown export - Export completed documents as professional markdown files
- π¨ Modern UI - Clean, responsive design with Tailwind CSS
- π Resume sessions - Continue where you left off with saved progress
- π± Responsive design - Works seamlessly on desktop and mobile devices
- π Embeddable - Designed to be embedded in other applications with CSS isolation
- π Host page integration - Can control elements on the host page when embedded
- β‘ Fast development - Built with Vite for lightning-fast development experience
- π‘οΈ Type safety - Full TypeScript support with strict type checking
- πͺ CSS isolation - Input field styling isolated from host page interference
- ποΈ Component architecture - Modular, reusable React components
- π Form validation - Comprehensive form validation and error handling
- ποΈ State management - Centralized state management with React Context
- Node.js (version 18 or higher)
- npm or yarn package manager
- Clone the repository:
git clone <repository-url>
cd arcana- Install dependencies:
npm install
# or
yarn install- Start the development server:
npm run dev
# or
yarn dev- Open your browser and navigate to
http://localhost:5173
npm run build
# or
yarn buildThe built files will be in the dist directory.
- Choose Document Type: Select either Specification or Memory document
- Follow the Wizard: Complete each step of the guided process
- Auto-save: Your progress is automatically saved as you work
- Export: Download your completed document as a markdown file
- Resume: Return later to continue where you left off
The memory/ folder contains actual project memory documents that serve dual purposes:
- π Project Documentation: Real decisions, lessons learned, and team knowledge about building Arcana
- π― Working Examples: Demonstrates proper memory document structure and content
You can import these documents into Arcana to test functionality or see real-world examples of how memory documents should be structured.
src/
βββ components/ # React components
β βββ memory-steps/ # Memory document wizard steps
β βββ spec-steps/ # Specification document wizard steps
β βββ DocumentTypeSelector.tsx
β βββ DocumentWizard.tsx
β βββ ImportModal.tsx
β βββ ...
βββ contexts/ # React context providers
β βββ WizardContext.tsx
βββ types/ # TypeScript type definitions
β βββ index.ts
βββ utils/ # Utility functions
β βββ markdownParsers.ts
β βββ hostPageUtils.ts
βββ styles/ # CSS files
memory/ # Project memory documents
βββ arcana-project-memory.md # Actual project documentation
βββ README.md # Memory folder documentation
public/ # Static assets
βββ sample-spec-document.md # Sample specification document
βββ sample-memory-document.md # Sample memory document
βββ ...
- React 19 - UI library
- TypeScript - Type safety and better developer experience
- Vite - Build tool and development server
- Tailwind CSS - Utility-first CSS framework
- Lucide React - Beautiful, customizable icons
- ESLint - Code linting and formatting
npm run dev- Start development servernpm run build- Build for productionnpm run lint- Run ESLintnpm run preview- Preview production build
Arcana uses environment variables for configuration. Copy .env.example to .env and customize as needed:
cp .env.example .envAvailable Environment Variables:
| Variable | Description | Default |
|---|---|---|
VITE_SAMPLE_SPEC_DOCUMENT_PATH |
Path or URL to the sample specification document | /sample-spec-document.md |
VITE_SAMPLE_MEMORY_DOCUMENT_PATH |
Path or URL to the sample memory document | /sample-memory-document.md |
Example configurations:
# Local development (default)
VITE_SAMPLE_SPEC_DOCUMENT_PATH=/sample-spec-document.md
VITE_SAMPLE_MEMORY_DOCUMENT_PATH=/sample-memory-document.md
# Production with CDN
VITE_SAMPLE_SPEC_DOCUMENT_PATH=https://cdn.example.com/samples/spec-document.md
VITE_SAMPLE_MEMORY_DOCUMENT_PATH=https://cdn.example.com/samples/memory-document.mdFor production applications, you may want to enable type-aware lint rules:
export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
// Other configs...
// Remove tseslint.configs.recommended and replace with this
tseslint.configs.recommendedTypeChecked,
// Alternatively, use this for stricter rules
tseslint.configs.strictTypeChecked,
// Optionally, add this for stylistic rules
tseslint.configs.stylisticTypeChecked,
// Other configs...
],
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
},
])Arcana is designed to be embeddable in other applications. It includes:
- CSS Isolation: Input fields are protected from host page CSS interference
- Unique Root Element: Uses
#arcana-app-rootfor scoped styling - Host Page Control: Can hide/show elements on the host page with specific IDs
- Auto-restoration: Automatically restores host page elements when the wizard is reset
The app provides utilities to control elements on the host page:
- Host page elements can be hidden/shown using utility functions
- Elements are automatically restored when needed
- Auto-save: All form data is automatically saved to localStorage as
arcana-state - Session Recovery: Users can resume their progress after closing and reopening the app
- Export Ready: Completed documents can be exported as properly formatted markdown files
- Logo: Uses
https://impressto.ca/images/arcana.pngfor branding - Favicon: Custom arcana.png favicon
- Colors: Utilizes Tailwind's primary color scheme (customizable via Tailwind config)
- Tailwind CSS: Easy to customize via
tailwind.config.js - Component Isolation: Individual components have scoped styling
- Responsive Design: Mobile-first approach with responsive breakpoints
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
This project is completely open source and free.
