A modern technical blog and documentation management system focused on knowledge sharing and technical content.
CaptRAW Documents is a full-featured blog system that provides user management, article management, and content browsing capabilities. The project adopts a modern technology stack with strong emphasis on code quality, security, and user experience.
- π Article Management System β Supports writing and publishing articles in Markdown format
- π¨ Modern UI Design β Responsive design with dark/light theme support
- π User Authentication System β Complete registration, login, and profile management
- π·οΈ Tag & Category System β Flexible tagging and categorization of articles
- π Analytics β Tracks views, likes, and comments
- π§ Configuration-Driven Architecture β Flexible configuration system supporting multi-environment deployment
- π‘οΈ Security-Oriented Design β Sensitive configuration isolation and secure resource access control
- Current Version: v0.6.0
- Development Phase: Phase 2 β Real Database Integration (Day 1 completed)
- Last Updated: April 2026 (Stage 2, Day 2 in progress)
- Project Foundation β Complete monorepo structure and development environment
- Layout System β Header, Footer, Layout components with responsive design
- Homepage Features β BannerCarousel (auto-rotating), NoticeBoard, ArticleTimeline with pagination
- Configuration System β Secure YAML configuration with frontend runtime loading + database-backed dynamic configuration
- Data Layer β Modular API services (articles, banners, notices, tags, auth, files)
- Backend Foundation β PostgreSQL database, MinIO/S3 object storage, asset signing service
- Asset Management β Signed URL generation, asset registry with database fallback
- UI Components β AssetImage, ThemeToggle, UserAvatar with federation support
- Custom Hooks β useArticles, useAssetUrl, useBanners, useNotices, useTags
- Project Documentation β Complete module documentation across all directories
- Real Database Architecture β Complete business tables (users, articles, announcements, banners, server_info)
- Server Information System β Dynamic configuration management with public/private controls
- Real API Endpoints β Article, Banner, and Authentication APIs with full CRUD operations
- Database Management Tools β Reset, seed, and migration scripts
- Federal Identity Support β Fediverse user ID integration in user table
- Frontend Service Layer Refactoring β Removing mock data, switching to real API calls (Day 2 task)
- Article Detail Page β Markdown rendering with syntax highlighting
- Comment System β Nested comments with reactions
- User Authentication Frontend β Login, registration pages (Day 4 task)
- Admin Dashboard β Article, user, and content management
- Search Functionality β Full-text search with filters
- API Documentation β OpenAPI/Swagger specification
- Framework: React 19.2.4 + TypeScript 4.9.5
- Routing: React Router DOM 7.13.2
- State Management: @tanstack/react-query 5.95.2
- Styling: Tailwind CSS 3.4.19
- HTTP Client: Axios 1.14.0
- Build Tool: Create React App 5.0.1
- Configuration: js-yaml 4.1.1
- Testing: React Testing Library, Jest
- Runtime: Node.js + Express 5.2.1
- Database: PostgreSQL 16 + pg 8.20.0
- Object Storage: @aws-sdk/client-s3 (S3 compatible, MinIO support)
- Asset Management: Signed URL generation with expiry, asset registry
- Database Operations: Connection pooling, transactions, health checks
- Configuration: Unified YAML configuration with environment variable overrides
- Containerization: Docker Compose for development environment
CaptRAW-Documents/
βββ frontend/ # Frontend project (React + TypeScript + Tailwind)
β βββ src/
β β βββ components/ # React components
β β β βββ layout/ # Layout components (Header, Footer, Layout)
β β β βββ ui/ # UI components (AssetImage, ThemeToggle, UserAvatar)
β β β βββ home/ # Homepage components (BannerCarousel, NoticeBoard, ArticleTimeline)
β β β βββ articles/ # Article components (ArticleCard)
β β βββ pages/ # Page components (HomePage)
β β βββ hooks/ # React Hooks (useArticles, useAssetUrl, etc.)
β β βββ services/ # API services (modular service architecture)
β β βββ config/ # Configuration module (runtimeConfig, urls)
β β βββ data/ # Data files (articles, notices, banners JSON)
β β βββ types/ # TypeScript definitions
β β βββ utils/ # Utility functions (assetUrl)
β βββ public/ # Static assets
β βββ scripts/ # Build scripts (config synchronization)
β βββ package.json # Dependencies
βββ backend/ # Backend project (Node.js + Express + TypeScript)
β βββ src/
β β βββ database/ # Database module (PostgreSQL connection pool)
β β β βββ index.ts # Database connection and query utilities
β β β βββ articles.ts # Article database operations
β β β βββ users.ts # User database operations
β β β βββ banners.ts # Banner database operations
β β β βββ serverInfo.ts # Server info database operations
β β βββ services/ # Business logic services
β β β βββ articleService.ts
β β β βββ authService.ts
β β β βββ bannerService.ts
β β β βββ serverInfoService.ts
β β βββ routes/ # API route handlers
β β β βββ articleRoute.ts
β β β βββ authRoute.ts
β β β βββ bannerRoute.ts
β β β βββ assetSignRoute.ts
β β β βββ serverInfoRoute.ts
β β βββ storage/ # Storage module (S3 compatible client)
β β βββ assetRegistry.ts # Asset registry with database fallback
β β βββ config.ts # Configuration management
β β βββ server.ts # Express server
β βββ scripts/ # Utility scripts (asset upload)
β βββ init-db.sql # Database initialization script
β βββ package.json # Dependencies
βββ Reference/ # Project documentation and resources
βββ scripts/ # Global scripts (MinIO initialization)
βββ config.yaml # Main configuration file
βββ docker-compose.yml # Docker configuration (PostgreSQL + MinIO)
βββ .gitignore # Git ignore file
- Node.js 18+
- npm 9+ or yarn 1.22+
- Git
-
Clone the repository
git clone <repository-url> cd CaptRAW-Documents
-
Install dependencies
# Frontend dependencies cd frontend npm install # Backend dependencies cd ../backend npm install
-
Start infrastructure services
# Start PostgreSQL and MinIO using Docker Compose docker-compose up -d -
Initialize the database
# Run database initialization cd backend npm run seed-db
-
Upload sample assets
# Upload sample images to object storage npm run upload-assets -
Start development servers
# Terminal 1: Backend server cd backend npm run dev # Terminal 2: Frontend server cd frontend npm start
-
Access the application
- Open: http://localhost:3000
cd frontend
npm startnpm run buildnpm test- TypeScript for static typing
- ESLint for linting
- Prettier for formatting
- Functional components + Hooks
import React from 'react';
interface NewComponentProps {}
const NewComponent: React.FC<NewComponentProps> = (props) => {
return (
// JSX
);
};
export default NewComponent;npm test
npm test -- --testPathPattern=ComponentName
npm test -- --coverage- Unit testing
- Integration testing
- End-to-end testing
cd frontend
npm run builddocker build -t captraw-documents .
docker run -p 3000:80 captraw-documents- Vercel (Frontend)
- Railway / Render (Backend)
- Docker Hub (Images)
- Sensitive configs are not exposed to frontend
- Type validation and error handling
- Safe fallback mechanisms
- Signed URL support for object storage
- Backend-generated short-lived access URLs
- Permission-based access control
- HTTPS support
- CORS configuration
- API rate limiting
- Fork the repository
- Create a feature branch
- Commit changes
- Push to branch
- Open a Pull Request
- Must pass TypeScript checks
- All tests must pass
- Follow coding standards
- Update documentation
This project is licensed under the AGPL-3.0 Licens.
- Maintainer: @He0xD4C0@hub.captraw.com
- Status: Actively developed
- Issues: Use GitHub Issues
Thanks to all contributors who helped build this project.
| Phase | Status | Progress |
|---|---|---|
| Phase 1: Frontend Foundation | β Completed | 100% |
| Phase 2: Backend Foundation | β Completed | 100% |
| Phase 3: Real API Integration | π‘ In Progress | 50% |
| Phase 4: Frontend Service Refactor | π‘ In Progress | 20% |
| Phase 5: Article Detail Pages | βͺ Not Started | 10% |
| Phase 6: User Authentication | βͺ Not Started | 20% |
| Phase 7: Admin & Management | βͺ Not Started | 0% |
| Phase 8: Testing & Deployment | βͺ Not Started | 15% |
-
β Phase 2, Day 1: Real Database Architecture (100%)
- Complete business tables with foreign key relationships
- UUID-based primary keys for all entities
- Federal identity support in user table
-
β Phase 2, Day 1: Server Information System (100%)
- Dynamic configuration storage in database
- Public/private configuration controls
- Runtime configuration API for frontend
-
β Phase 2, Day 1: Article API Implementation (100%)
- Complete CRUD operations for articles
- Search, filtering, and pagination
- Author information joining
-
β Phase 2, Day 1: Banner API Implementation (100%)
- Active banner filtering by date
- Display order management
- Admin management endpoints
-
β Phase 2, Day 1: Authentication API Implementation (100%)
- User registration and login
- JWT token generation (basic)
- Federal user identity support
-
π‘ Phase 2, Day 2: Frontend Service Layer Refactoring (0%)
- Remove mock data and simulateDelay
- Connect to real API endpoints
- Update error handling and retry logic
-
βͺ Phase 2, Day 3: Article Detail Page Implementation (0%)
- Article page component
- Markdown rendering
- Comment system foundation
-
βͺ Phase 2, Day 4: User Authentication Frontend (0%)
- Login and registration pages
- Profile management
- JWT token handling
β Completed (April 1-2):
- Real database architecture and business tables
- Server information configuration system
- Complete backend API endpoints (articles, banners, auth)
- Database management scripts
π In Progress (April 2):
- Frontend service layer refactoring
π Upcoming (April 3-7):
- Article detail pages
- User authentication frontend
- Testing and quality assurance
- Documentation and deployment preparation
Inspired by CaptRAW Community β Misskey Server You are also welcome to visit our CaptRAW community to communicate, share life, or just hang out.
If you want, I can further optimize this into:
- GitHub README (more concise + badge style)
- Product landing page copy (more marketing-oriented)
- Technical whitepaper style (more formal and structured)
Just specify the target.
