{"id":19770895,"url":"https://github.com/pranaydwivedi444/medium-blog-worker-serverless","last_synced_at":"2026-04-11T05:31:55.305Z","repository":{"id":256748468,"uuid":"855043743","full_name":"pranaydwivedi444/medium-blog-worker-serverless","owner":"pranaydwivedi444","description":"Serveless Cloudfare Hono js based  Medium blog clone","archived":false,"fork":false,"pushed_at":"2024-11-11T18:16:37.000Z","size":209,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-28T11:29:42.877Z","etag":null,"topics":["blog","honojs","medium-clone","react","redux","restful-api","tailwindcss","tinymce-editor","typescript"],"latest_commit_sha":null,"homepage":"https://blog-worker-serverless.vercel.app/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pranaydwivedi444.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-10T07:53:37.000Z","updated_at":"2024-11-11T18:16:40.000Z","dependencies_parsed_at":"2025-02-28T04:44:25.853Z","dependency_job_id":"9dd3808c-7e99-4c20-af3f-d9c58fc5eec1","html_url":"https://github.com/pranaydwivedi444/medium-blog-worker-serverless","commit_stats":null,"previous_names":["pranaydwivedi444/medium-blog-worker-serverless"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pranaydwivedi444/medium-blog-worker-serverless","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pranaydwivedi444%2Fmedium-blog-worker-serverless","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pranaydwivedi444%2Fmedium-blog-worker-serverless/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pranaydwivedi444%2Fmedium-blog-worker-serverless/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pranaydwivedi444%2Fmedium-blog-worker-serverless/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pranaydwivedi444","download_url":"https://codeload.github.com/pranaydwivedi444/medium-blog-worker-serverless/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pranaydwivedi444%2Fmedium-blog-worker-serverless/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261789229,"owners_count":23209774,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blog","honojs","medium-clone","react","redux","restful-api","tailwindcss","tinymce-editor","typescript"],"created_at":"2024-11-12T05:00:29.919Z","updated_at":"2025-12-30T20:06:45.492Z","avatar_url":"https://github.com/pranaydwivedi444.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Medium Blog Clone\n\nDeployed Backend Url = https://backend.pranaydwivedi444.workers.dev\n\nMedium Blog Clone\nOverview\nThis is a full-stack Medium Blog Clone project built using modern web development technologies. The frontend is powered by React and TypeScript, styled with TailwindCSS, and includes TinyMCE for rich-text editing. The backend is built with Hono.js and deployed on Cloudflare Workers. It features CRUD operations with Postgres, Prisma ORM, JWT authentication (using cookies), and Zod for validation. The project is designed for high scalability and modern development practices with TypeScript support across both the frontend and backend.\n## Features\n\n### Current Features\n\n#### Frontend\n- **React \u0026 TypeScript**: Type-safe and modular architecture.\n- **TailwindCSS**: Utility-first, responsive design.\n- **TinyMCE**: Rich-text blog post creation and editing.\n- **Reusable UI Components**: Includes Buttons, Checkboxes, and Navbar.\n- **Routing**: Smooth navigation using React Router for Signup, Signin, and Blog management.\n- **State Management**: Utilizes React Hooks for local state management.\n- **CRUD Operations**: Manage blogs and users effectively.\n- **API Integration**: Handles authentication, blog fetching, creation, and editing with backend.\n- **Input Validation**: Supabase validation with Zod for safe input handling.\n\n#### Backend\n- **Hono.js**: Lightweight server-side framework deployed on Cloudflare Workers.\n- **JWT Authentication**: Secure sessions using cookies.\n- **Postgres Database**: Managed with Prisma ORM for relational data.\n- **API Validation**: Zod validation schema for type-safe APIs.\n- **User Authentication**: Integrated with Supabase for authentication and storage solutions.\n\n### Planned Features\n- **State Management**: Integrate React Context for global state handling.\n- **Data Management**: Optionally use React Recoil or React Query for asynchronous data management.\n- **Caching**: Implement Redis for caching frequently accessed data.\n- **Infinite Scroll**: Add Bottom Loading/Infinite Scroll for improved UX on blog lists.\n- **AI Integration**: Integrate Google Bard AI for blog summarization and enhanced user experience.\n\n## Installation\n\nClone whole project then  cd into Front end and backend \n\n```bash\nnpm install \n```\n\n## Usage\nSet up environment variables: Create a .env file in the root directory and add your TinyMCE API key:\n```javascript\n# For Front ,  env keys example :\nVITE_tinyMCE_API_KEY=your-api-key-here\n\n\n# For Backend ,  env keys example :\nDATABASE_URL=your-postgres-url\n# In Wrangler.toml\nDATABASE_URL=\"your pool connection url\"\n JWT_SECRET = \"jwt secret\"\n COOKIE_SECRET = \"cookie secret\"\n```\n\n## Contributing\n\nPull requests are welcome. For major changes, please open an issue first\nto discuss what you would like to change.\n\nPlease make sure to update tests as appropriate.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpranaydwivedi444%2Fmedium-blog-worker-serverless","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpranaydwivedi444%2Fmedium-blog-worker-serverless","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpranaydwivedi444%2Fmedium-blog-worker-serverless/lists"}