A web application built with Cloudflare Workers (Hono) that allows users to store, organize, and search articles, movies, or any work available on the internet.
This project is a functional prototype that demonstrates the core concepts but is no longer actively developed.
- 🔗 Store and organize web content by URL
- 🏷️ Tag-based categorization
- 🔍 Full-text search functionality
- 🖼️ Automatic OGP (Open Graph Protocol) data extraction
- 📱 Responsive tile/list view display
- ⚡ Edge computing with Cloudflare Workers
- Backend: Cloudflare Workers + Hono
- Database: Cloudflare D1 (SQLite)
- Frontend: React + Vite
- Runtime: Bun
- Testing: Vitest with TDD approach
# Install dependencies
bun install
# Copy environment variables
cp .dev.vars.example .dev.vars
# Run tests
bun test
# Run tests in watch mode
bun test:watch
# Start local development server
bun run dev
# Start frontend development server
bun run dev:client
POST /api/articles
- Create new articleGET /api/articles
- List articles (paginated)GET /api/articles/:id
- Get single articlePUT /api/articles/:id
- Update articleDELETE /api/articles/:id
- Delete articleGET /api/search
- Search articlesGET /api/tags
- Get tag statisticsPOST /api/ogp/fetch
- Fetch OGP data for URL
# Create D1 database
bun run db:init
# Run migrations
bun run db:migrate
# Deploy to Cloudflare Workers
bun run deploy
web-curator/
├── src/
│ ├── server/ # Backend API
│ ├── client/ # React frontend
│ └── shared/ # Shared types
├── test/ # Test files
├── docs/ # Documentation
└── database/ # SQL schemas
The project follows TDD (Test Driven Development) principles with comprehensive test coverage:
- Unit tests for models and services
- Integration tests for API routes
- 51 tests with 100% coverage
This was built as a proof-of-concept to explore:
- Cloudflare Workers and D1 database capabilities
- Server-side OGP fetching to bypass CORS limitations
- SQLite FTS5 for full-text search at the edge
- TDD approach with factory pattern for better testability
- Edge computing for low-latency web applications
The core functionality works well, demonstrating that a full-featured web application can run entirely on Cloudflare's edge infrastructure.
- Archive on GitHub - Mark as archived to show it's no longer maintained
- Add clear status - Indicate it's discontinued/prototype (✓ done above)
- Document learnings - Share what worked and what didn't
- License it - Allow others to fork and continue if interested
- Keep it public - Others can learn from the code
Feel free to:
- Fork this project
- Use the code as reference
- Build upon the ideas
- Report issues (though they may not be fixed)
MIT