https://github.com/dcoric/redstone
Redstone is a knowledge management application similar to Obsidian, featuring markdown file storage, editing, and synchronization across web and mobile platforms.
https://github.com/dcoric/redstone
Last synced: 5 months ago
JSON representation
Redstone is a knowledge management application similar to Obsidian, featuring markdown file storage, editing, and synchronization across web and mobile platforms.
- Host: GitHub
- URL: https://github.com/dcoric/redstone
- Owner: dcoric
- License: mit
- Created: 2025-12-17T19:41:20.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2025-12-20T00:27:23.000Z (6 months ago)
- Last Synced: 2025-12-21T09:03:33.305Z (5 months ago)
- Language: TypeScript
- Size: 310 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Redstone
An Obsidian-like knowledge management application with markdown support, folder organization, and multi-device sync.
## Tech Stack
- **Monorepo**: pnpm workspaces + Turborepo
- **Web**: Next.js 16 (App Router) with TypeScript
- **Mobile**: Expo React Native (in progress)
- **Database**: PostgreSQL 15+ with Prisma ORM
- **Authentication**: NextAuth.js (web) + JWT (mobile)
## Project Structure
```
redstone/
├── apps/
│ ├── web/ # Next.js web application
│ └── mobile/ # Expo mobile app (in progress)
├── packages/
│ ├── shared/ # Shared TypeScript types and utilities
│ ├── database/ # Prisma schema and client
│ ├── api-client/ # Shared API client
│ └── markdown/ # Markdown utilities
├── docker/ # Docker configuration
│ └── docker-compose.yml
├── PLAN.md # Detailed development plan
└── API.md # API documentation
```
## Getting Started
### Prerequisites
- Node.js 18+
- pnpm 8+
- Docker & Docker Compose (for PostgreSQL)
### Installation
1. Clone the repository:
```bash
git clone
cd redstone
```
2. Install dependencies:
```bash
pnpm install
```
3. Start PostgreSQL database:
```bash
cd docker && docker-compose up -d
```
4. Set up environment variables:
```bash
cp .env.example apps/web/.env.local
# Edit apps/web/.env.local if needed
```
5. Run database migrations and seed:
```bash
pnpm --filter @redstone/database db:generate
pnpm --filter @redstone/database db:migrate
pnpm --filter @redstone/database db:seed
```
6. Start the development server:
```bash
pnpm dev:web
```
The web app will be available at [http://localhost:3000](http://localhost:3000)
## Test Credentials
After running the seed script, you can use:
- **Email**: `test@redstone.app`
- **Password**: `password123`
## Development Commands
```bash
# Run all apps
pnpm dev
# Run specific apps
pnpm dev:web # Next.js web app
pnpm dev:mobile # Expo mobile app (when ready)
# Database commands
pnpm --filter @redstone/database db:generate # Generate Prisma client
pnpm --filter @redstone/database db:migrate # Run migrations
pnpm --filter @redstone/database db:seed # Seed database
pnpm --filter @redstone/database db:studio # Open Prisma Studio
# Build
pnpm build # Build all apps
# Test
pnpm test # Run tests
# Lint
pnpm lint # Lint all packages
```
## Features
### Implemented ✅
- **Authentication**
- User registration and login
- NextAuth.js for web (cookie-based)
- JWT tokens for mobile API access
- **File Management**
- Create, read, update, delete files
- Markdown content support
- Automatic versioning on content changes
- Search by title and content
- Soft deletes for sync
- **Folder Organization**
- Create nested folders
- Move files between folders
- Tree structure with file counts
- **Tag System**
- Add/remove tags from files
- Auto-create tags
- Tag-based organization
- **Sync API**
- Incremental sync for mobile
- Change tracking since timestamp
### Implemented (Frontend) ✅
- **Authentication UI**
- Login and signup pages
- Session management with NextAuth
- Route protection middleware
- User menu with logout
- **API Client & Hooks**
- Typed API client with authenticated requests
- SWR hooks for data fetching (useFiles, useFolders, useAuth)
- Automatic cookie handling for NextAuth sessions
- **UI Components**
- File browser interface with real-time data
- Markdown editor with live preview (CodeMirror 6)
- Folder navigation sidebar with tree structure
- File creation, editing, and deletion
- Folder-based file filtering
- Search interface (UI ready)
### Implemented (Data Integration) ✅
- **File Operations**
- Create new files with "New File" button
- Load and edit files in markdown editor
- Save file changes with auto-detection of unsaved changes
- Delete files with confirmation dialog
- Navigate to files by clicking file cards
- Real-time file list updates
- **Folder Integration**
- Load folder tree from API
- Filter files by selected folder
- Display file counts per folder
- "All Files" view for root level
### Planned 🚧
- **Web Frontend** (Remaining Features)
- Implement search functionality
- Add tag management UI
- Folder creation/deletion UI
- **Mobile App** (Phase 5)
- Expo React Native app
- Offline support
- Mobile-optimized editor
- **Advanced Features** (Phase 6)
- Real-time sync (WebSockets/SSE)
- Internal linking between files
- File attachments
- Export to PDF/HTML
- Graph view of connections
## API Documentation
See [API.md](API.md) for complete API documentation.
Quick example:
```bash
# Login
curl -X POST http://localhost:3000/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"test@redstone.app","password":"password123"}'
# Get files (use token from login response)
curl -X GET http://localhost:3000/api/files \
-H "Authorization: Bearer "
```
## Database Schema
Key models:
- **User**: User accounts
- **File**: Markdown files with content
- **Folder**: Nested folder structure
- **FileVersion**: Version history for files
- **Tag**: User-created tags
- **FileTag**: Many-to-many relationship between files and tags
See [packages/database/prisma/schema.prisma](packages/database/prisma/schema.prisma) for the complete schema.
## Project Status
✅ **Phase 1 Complete**: Monorepo setup
✅ **Phase 2 Complete**: Core backend API
✅ **Phase 3 Complete**: Web frontend UI components
✅ **Phase 4 Complete**: Web frontend API integration
- ✅ Authentication & infrastructure (production-ready)
- Full type safety (zero `any` types)
- SWR hooks and configuration
- NextAuth v5 compatible middleware
- Error boundaries
- Build passing with zero errors
- ✅ Data integration (wire UI to API endpoints)
- File CRUD operations fully functional
- Folder navigation connected to API
- Real-time data fetching and updates
- Loading and error states
⏳ **Phase 5 Planned**: Mobile app
⏳ **Phase 6 Planned**: Advanced features (search, tags UI, folder management)
See [PLAN.md](PLAN.md) for detailed implementation plan and [IMPROVEMENTS.md](IMPROVEMENTS.md) for recent code quality improvements.
## License
MIT