{"id":15723359,"url":"https://github.com/akshitlakhera/pencraft-full-stack-blogging-application","last_synced_at":"2025-04-07T07:10:02.099Z","repository":{"id":225959613,"uuid":"763920350","full_name":"AkshitLakhera/PenCraft-Full-Stack-Blogging-Application","owner":"AkshitLakhera","description":"PenCraft: React frontend, Cloudflare Workers backend. Features Prisma for DB, JWT for auth, and Tailwind CSS with Aceternity UI components for styling. Simplifying blogging with efficiency.","archived":false,"fork":false,"pushed_at":"2024-11-13T04:51:57.000Z","size":5222,"stargazers_count":28,"open_issues_count":54,"forks_count":47,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-07T07:09:27.172Z","etag":null,"topics":["cloudflare","cloudinary","gssoc-ext","hacktoberfest","hacktoberfest-accepted","honojs","jwt-authentication","prisma","psotgresql","react-hooks","tailwind-css","vercel","web-crypto-api","zod"],"latest_commit_sha":null,"homepage":"https://pen-craft.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AkshitLakhera.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","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-02-27T06:40:06.000Z","updated_at":"2025-03-19T15:26:28.000Z","dependencies_parsed_at":"2024-05-04T18:29:02.738Z","dependency_job_id":"08bdd6bf-f5d3-477e-a50d-b64d836aa950","html_url":"https://github.com/AkshitLakhera/PenCraft-Full-Stack-Blogging-Application","commit_stats":{"total_commits":196,"total_committers":27,"mean_commits":"7.2592592592592595","dds":0.3214285714285714,"last_synced_commit":"1c845bfc51d1593a794d0cabf2f42ca4f986af0e"},"previous_names":["akshitlakhera/pencraft","akshitlakhera/pencraft-full-stack-blogging-application"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AkshitLakhera%2FPenCraft-Full-Stack-Blogging-Application","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AkshitLakhera%2FPenCraft-Full-Stack-Blogging-Application/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AkshitLakhera%2FPenCraft-Full-Stack-Blogging-Application/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AkshitLakhera%2FPenCraft-Full-Stack-Blogging-Application/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AkshitLakhera","download_url":"https://codeload.github.com/AkshitLakhera/PenCraft-Full-Stack-Blogging-Application/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247608151,"owners_count":20965952,"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":["cloudflare","cloudinary","gssoc-ext","hacktoberfest","hacktoberfest-accepted","honojs","jwt-authentication","prisma","psotgresql","react-hooks","tailwind-css","vercel","web-crypto-api","zod"],"created_at":"2024-10-03T22:11:18.612Z","updated_at":"2025-04-07T07:10:02.055Z","avatar_url":"https://github.com/AkshitLakhera.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PenCraft\n\n\u003cimg width=\"1226\" alt=\"image\" src=\"https://github.com/user-attachments/assets/f075039a-a8a2-4330-b7c8-b26d66ca2e8c\"\u003e\n\n\nThis project aims to create a blogging platform using modern technologies for both frontend and backend. It utilizes a robust stack including React for the frontend, Cloudflare Workers for the backend, and a combination of other tools for validation, ORM, database, and authentication.\n\n## Technologies Used\n\n- **Frontend:**\n\n  - React: A popular JavaScript library for building user interfaces.\n  - Zod: A TypeScript-first schema declaration and validation library.\n  - TypeScript: A statically typed superset of JavaScript that compiles to plain JavaScript.\n\n  - **Styling:**\n  - Tailwind CSS: A utility-first CSS framework that provides low-level utility classes to build custom designs.\n  - Aceternity UI: A collection of reusable UI components built with Tailwind CSS, designed for rapid development and consistent styling.\n\n- **Backend:**\n  - Cloudflare Workers: A serverless execution environment that allows you to create lightweight, scalable backend applications.\n  - Prisma: A modern database toolkit for TypeScript and Node.js that simplifies database access.\n  - Postgres: A powerful, open-source relational database system.\n  - JWT (JSON Web Tokens): A compact, URL-safe means of representing claims to be transferred between two parties securely.\n  - Using WebCrypto for hashing passsword before storing in the database.\n\n## Setup Instructions\n\n### Frontend\n\n1. Navigate to the `frontend` directory.\n2. Run `npm install` to install dependencies.\n3. Run `npm start` to start the development server.\n4. Access the development server at `http://localhost:3000`.\n\n### Backend\n\n1. Navigate to the `backend` directory.\n2. Run `npm install` to install dependencies.\n3. Set up your Postgres database and configure the connection in `prisma/schema.prisma`.\n4. Run `npx prisma migrate dev` to apply migrations and generate Prisma client.\n5. Run `npm run dev` to start the backend server.\n6. Access the backend server at `http://localhost:8080`.\n\n## Authentication (Cookies Approach)\n\nFor authentication, this project utilizes JSON Web Tokens (JWT) along with a cookies-based approach.\n\n1. Upon successful login, a JWT token is generated server-side and sent to the client.\n2. The JWT token is then stored in an HTTP-only cookie for enhanced security.\n3. Subsequent requests from the client include this token in the cookie header.\n4. The server validates the JWT token to authenticate the user for protected routes.\n\n## Additional Functionalities\n\n### Bookmark Functionality\n\nUsers can bookmark their favorite posts for quick access.\n\n### Search Functionality\n\nUsers can search for posts based on keywords or tags.\n\n### Delete Bookmark with Confirmation Model\n\nUsers can delete bookmarks with a confirmation model to prevent accidental deletion.\n\n###\n\n## Image Upload Feature\n\nWorking on to supports image uploads, allowing users to enhance their blog posts with images. (Will add it after I get my credit card)\n\n## Add rich text editor\n\nAdded jodit editor .\n\n## Images:\n\n\u003cimg width=\"1710\" alt=\"image\" src=\"https://github.com/user-attachments/assets/f7c0adb4-6e0b-4de2-b914-34a9d3bdd47e\"\u003e\n\n\u003cimg width=\"1710\" alt=\"image\" src=\"https://github.com/user-attachments/assets/4c11eff6-fe58-4304-ab25-ec4b26883022\"\u003e\n\n\n## ❤️Our Valuable Contributors\n\n[![Contributors](https://contrib.rocks/image?repo=AkshitLakhera/PenCraft-Full-Stack-Blogging-Application)](https://github.com/AkshitLakhera/PenCraft-Full-Stack-Blogging-Application/graphs/contributors)\n\n## Contributors\n\n- **Abhi-hertz** - [@93651229+AE-Hertz](https://github.com/93651229+AE-Hertz)\n- **Akshit lakhera** - [@akshitlakhera14](https://github.com/akshitlakhera14)\n- **Ananya Gupta** - [@145869907+ananyag309](https://github.com/145869907+ananyag309)\n- **Aryan Ramesh Jain** - [@138214350+jainaryan04](https://github.com/138214350+jainaryan04)\n- **Bhumika** - [@sharmabhmi](https://github.com/sharmabhmi)\n- **Edasgh** - [@edas25564](https://github.com/edas25564)\n- **MIGHTY1o1** - [@shubhagarwalcse](https://github.com/shubhagarwalcse)\n- **Nikhil Saxena** - [@91839763+Cleveridiot07](https://github.com/91839763+Cleveridiot07)\n- **Pavan Shanmukha Madhav Gunda** - [@pavanshanmukhmadhav](https://github.com/pavanshanmukhmadhav)\n- **Rahul Kumar** - [@rahulbarnwalonlyu2](https://github.com/rahulbarnwalonlyu2)\n- **Risheendra183** - [@yannamrishee](https://github.com/yannamrishee)\n- **Saksham Saraf** - [@122025299+sakshamsaraf23](https://github.com/122025299+sakshamsaraf23)\n- **Samyak Aditya** - [@91079592+samyak-aditya](https://github.com/91079592+samyak-aditya)\n- **Shariq** - [@shariqsd2003](https://github.com/shariqsd2003)\n- **Shubham Pandey** - [@69081168+heizshubham](https://github.com/69081168+heizshubham)\n- **Siddhi Sahu** - [@himanisahu739](https://github.com/himanisahu739)\n- **Umesh Kumar** - [@149981630+UmeshKumar0143](https://github.com/149981630+UmeshKumar0143)\n- **UmeshKumar0143** - [@umeshkumar153654](https://github.com/umeshkumar153654)\n- **ayushrana83** - [@168258223+ayushrana83](https://github.com/168258223+ayushrana83)\n- **dependabot** - [@49699333+dependabot[bot]](https://github.com/49699333+dependabot[bot])\n- **dev129** - [@76431221+dev129](https://github.com/76431221+dev129)\n- **iamDyeus** - [@dyeusyt](https://github.com/dyeusyt)\n- **kartikeyyy** - [@kartikeykvk369](https://github.com/kartikeykvk369)\n- **khaulanauman** - [@khaulanauman](https://github.com/khaulanauman)\n- **sezallagwal** - [@sezal1470](https://github.com/sezal1470)\n- **smog-root** - [@machha.shashank](https://github.com/machha.shashank)\n- **tarunkumar2005** - [@tarunkumar6258278](https://github.com/tarunkumar6258278)\n- **tejasbenibagde** - [@124677750+tejasbenibagde](https://github.com/124677750+tejasbenibagde)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakshitlakhera%2Fpencraft-full-stack-blogging-application","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakshitlakhera%2Fpencraft-full-stack-blogging-application","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakshitlakhera%2Fpencraft-full-stack-blogging-application/lists"}