From c2164ab24b4e335b3624f356f2b12356e3964568 Mon Sep 17 00:00:00 2001 From: Avdhesh-Varshney Date: Thu, 13 Nov 2025 23:42:07 +0530 Subject: [PATCH 1/5] update readme file --- README.md | 252 ++++++++++++--------------- docs/CODE_STRUCTURE.md | 376 +++++++++++++++++++++++++++++++++++++++++ docs/CONTRIBUTORS.md | 15 ++ 3 files changed, 501 insertions(+), 142 deletions(-) create mode 100644 docs/CODE_STRUCTURE.md create mode 100644 docs/CONTRIBUTORS.md diff --git a/README.md b/README.md index e7d564a7..10b4a886 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,23 @@ ## Hey <πšŒπš˜πšπšŽπš›πšœ/>! πŸ‘‹ -[![Typing SVG](https://readme-typing-svg.demolab.com?font=Monoton&size=85&pause=12&speed=12&color=00FF00¢er=true&vCenter=true&width=2000&height=200&lines=Hello+World!;Welcome+to+the+Blog+Script+project;Your+Next+Big+Commit+Starts+Here!;Let's+Code+Something+Awesome!;Collaborate.+Build.+Inspire!;Write+Code,+Build+Dreams!;Code.+Commit.+Conquer!;Build,+Learn,+and+Contribute!)](https://git.io/typing-svg) +

+ Typing SVG +

+

+ + + + + + + + + +

@@ -25,159 +38,114 @@

+![Babel](https://img.shields.io/badge/Babel-F9DC3e?style=for-the-badge&logo=babel&logoColor=black) ![React](https://img.shields.io/badge/React-20232A?style=for-the-badge&logo=react&logoColor=61DAFB) ![Vite](https://img.shields.io/badge/Vite-646CFF?style=for-the-badge&logo=vite&logoColor=white) +![MUI](https://img.shields.io/badge/MUI-%230081CB.svg?style=for-the-badge&logo=mui&logoColor=white) +![Typescript](https://img.shields.io/badge/TypeScript-007ACC?style=for-the-badge&logo=typescript&logoColor=white) ![Node.js](https://img.shields.io/badge/Node.js-43853D?style=for-the-badge&logo=node.js&logoColor=white) ![Express.js](https://img.shields.io/badge/Express.js-000000?style=for-the-badge&logo=express&logoColor=white) ![MongoDB](https://img.shields.io/badge/MongoDB-4EA94B?style=for-the-badge&logo=mongodb&logoColor=white) -![Tailwind CSS](https://img.shields.io/badge/Tailwind_CSS-38B2AC?style=for-the-badge&logo=tailwind-css&logoColor=white) -![Typescript](https://img.shields.io/badge/TypeScript-007ACC?style=for-the-badge&logo=typescript&logoColor=white) +![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&logo=docker&logoColor=white) +![Prettier](https://img.shields.io/badge/prettier-%23F7B93E.svg?style=for-the-badge&logo=prettier&logoColor=black) +![ESLint](https://img.shields.io/badge/ESLint-4B3263?style=for-the-badge&logo=eslint&logoColor=white)
---- - -#### :zap: About the Project ❀️ - -Welcome to the **Code A2Z - Project Blog**β€”a collaborative blogging platform designed to simplify content creation, management, and sharing. -It provides a structured environment where developers and writers can seamlessly integrate submodules, customize templates, and efficiently manage their projects. -With role-based access, built-in SEO optimization, and community discussions, **Code A2Z - Project Blog** enhances collaboration and ensures global visibility for your work. - -#### :zap: Contribute to Code A2Z! βœ… - -Code A2Z is an open-source platform where you can **submit your projects, update them anytime, and improve the platform itself**. -It’s perfect for developers and writers who want to **showcase their work, collaborate with others, and gain global visibility**. - -Join us, contribute, and grow together! 🌍✨ - -### :zap: Key Features 🏒 +

+ Code A2Z is an open-source project that empowers developers to build, learn, and collaborate through structured modular design and real-time tools. +

+ +## About Code A2Z + +> [!NOTE] +> Code A2Z is the unified space for developers to build, learn, and collaborate through real-world open-source contributions. + +### :zap: For Developers + +Code A2Z is an open-source full-stack platform crafted with React + Vite + MUI on the frontend and Node.js + Express + MongoDB on the backend. +It’s designed with a highly modular architecture, clean folder conventions, atomic JOTAI state management, and real-time editor synchronization, offering developers a modern and maintainable foundation for scalable projects. + +### :zap: For Users + +Code A2Z is not just another project β€” it’s an ecosystem built to empower developers. +The platform’s goal is to create a space where ideas turn into collaborative code. +It bridges the gap between solo learning and team development by combining real-time editing, intelligent project organization, subscription-based updates, and structured contribution systems. +Future releases will expand into AI-driven productivity tools, personalized feeds, and real-time collaboration analytics to make it the go-to platform for every developer who wants to build, learn, and grow together. + +> [!IMPORTANT] +> You can directly explore the project and start contributing using either setup: +> +> - Frontend only β†’ linked to deployed backend +> - Full-stack setup β†’ both client and server locally +> - Follow the setup method that best fits your contribution focus. +> - You can get required credentials from the `/docs` folder [`SETUP.md`](./docs/SETUP.md). + +## Features Checklist + +> [!NOTE] +> These features represent the current strengths and future goals of **Code A2Z**, focused on scalability, collaboration, and developer productivity. +> Each item listed here is open for contribution, proposal, and improvement. + +- [x] MUI-Based Design System (https://github.com/Code-A2Z/code-a2z/pull/1317, https://github.com/Code-A2Z/code-a2z/pull/1291) +- [x] Custom Notification Engine (https://github.com/Code-A2Z/code-a2z/pull/1317) +- [x] JOTAI State Management Integration (https://github.com/Code-A2Z/code-a2z/pull/1317) +- [x] Modular Client & Server Architecture (https://github.com/Code-A2Z/code-a2z/pull/1317, https://github.com/Code-A2Z/code-a2z/pull/1304) +- [x] Real-Time Editor Synchronization (https://github.com/Code-A2Z/code-a2z/pull/1317, https://github.com/Code-A2Z/code-a2z/pull/1104) +- [x] Subscription & Mailing via RESEND API (https://github.com/Code-A2Z/code-a2z/pull/1294) +- [x] Personal Project Collections (https://github.com/Code-A2Z/code-a2z/issues/1180) +- [x] In-App Project Collaboration (https://github.com/Code-A2Z/code-a2z/issues/1179) +- [ ] User Feedback Collection System +- [ ] Personalized Learning Feed +- [ ] Role Based Dashboard System +- [ ] Developer Collaboration Matchmaking +- [ ] Project & User Ranking Mechanism +- [ ] Multi-Language Localization +- [ ] Collection & Bookmarking System +- [ ] Collaboration Invitations via Email +- [ ] AI-Powered Real-Time Chat Channels +- [ ] Dynamic Project Activity Dashboard +- [ ] Private Notes Per Project +- [ ] Habit & Streak Tracker +- [ ] LLM-Generated Quiz System +- [ ] Integrated Video Streaming Platform + +> [!TIP] +> Each feature aligns with Code A2Z’s mission to make collaborative development **simpler, faster, and smarter**. +> Review `/client/src/modules` and `/server/src/routes` before contributing for structural consistency. +> To propose a new idea, use the [**Feature Request Template**](./.github/ISSUE_TEMPLATE/feature-request.yml). + +## Community & Support + +> [!NOTE] +> **Code A2Z** thrives because of its active and growing community of developers, designers, and contributors. +> Join us, share ideas, ask questions, or collaborate on open issues β€” every contribution counts. + +### Join the Discussion + +Be part of our developer space where we brainstorm, debug, and build together. + +- πŸ’¬ **Discord Server** β€” [Join our Discord](https://discord.gg/tSqtvHUJzE) +- 🧭 **GitHub Discussions** β€” [Explore active threads](https://github.com/orgs/Code-A2Z/discussions/2) +- 🧾 **Community Board** β€” [Contribute ideas & suggestions](https://github.com/Code-A2Z/code-a2z/discussions/882) + +### Need Help? + +> [!TIP] +> If you encounter issues while setting up or contributing: +> +> - Check the [**Docs**](./docs/) folder for setup guides & API keys configuration. +> - Review the [**Issues**](https://github.com/Code-A2Z/code-a2z/issues) tab for existing bug reports. +> - Or open a new one using our [**Bug Report Template**](./.github/ISSUE_TEMPLATE/bug-report.yml). + +> [!IMPORTANT] +> All discussions and contributions follow our [**Code of Conduct**](./CODE_OF_CONDUCT.md). +> Respect, collaboration, and professionalism are non-negotiable values of the **Code A2Z** community. -| **Feature** | **Description** | -| --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Markdown Support** | Easily write and format blog content using Markdown, making it clean and well-structured. Markdown helps in organizing text, adding headings, lists, links, and images without complex coding. | -| **Submodule Integration** | Allows you to add external repositories as submodules, making it easier to manage and link different projects inside your blog. This helps in organizing code and keeping everything in one place. | -| **Customizable Templates** | Choose from ready-made templates to design your blog the way you like. These templates help in quickly setting up a beautiful and professional-looking blog. | -| **Project Contribution Workflow** | Submit your project to this repository and update it anytime. You can also contribute more by improving your project and raising pull requests (PRs) to update Code A2Z itself. This helps in growing your project while also making Code A2Z - Project Blog better. | -| **Global Visibility** | Your blog and projects will be visible to a larger audience worldwide. This increases your chances of getting noticed, getting feedback, and collaborating with others. | -| **Community Discussions** | Connect with other contributors, discuss ideas, ask questions, and share knowledge. This makes learning and improving projects easier through teamwork. | -| **Full Ownership** | You have complete control over your projects and contributions. No one else can change your work without your permission. | -| **SEO Optimization** | Code A2Z - Project Blog ensures your content is easily found on search engines like Google. This helps in reaching more people and increasing engagement. | -| **Role-Based Dashboard** | Different users have different levels of access. Admins can manage everything, collaborators can work on assigned projects, contributors can submit their work, and regular users can read and interact with blogs. | - -### :zap: What Can You Contribute? πŸ‘©β€πŸ’» - -> Choose a contribution area that suits your skills - -| **Contribution Area** | -| ----------------------------- | -| **Add New Projects** | -| **Improve Existing Projects** | -| **Documentation Updates** | -| **Bug Fixes** | -| **Responsive Design** | -| **Code Readability** | -| **Optimization** | - -### :zap: How to Contribute? πŸ€” - -1. Star the repository on GitHub to show your support. -2. Browse the [**Issues**](https://github.com/Code-A2Z/code-a2z/issues) to find tasks that need attention. -3. Fork the repository to your own GitHub account to start working on your changes. -4. Create a new branch for the issue you're working on. -5. Make your changes, ensuring they align with the project's structure and standards. -6. Add screenshots or screen captures of your changes to showcase their effects in the pull request. -7. Submit a [**Pull Request**](https://github.com/Code-A2Z/code-a2z/pulls), and it will be reviewed. -8. Make sure to read and follow the [**Contributing Guidelines**](https://github.com/Code-A2Z/code-a2z/blob/main/CONTRIBUTING.md) and [**Code of Conduct**](https://github.com/Code-A2Z/code-a2z/blob/main/CODE_OF_CONDUCT.md). - -### :zap: Pull Requests Review Criteria 🧲 - -1. Fill out the **_PR template_** properly when submitting a pull request. -2. Do not commit directly to the `main` branch, otherwise your PR will be instantly rejected. -3. Don't create more than 3-4 commits unless permitted by Admin and Mentors in your PR. -4. Add comments to your code wherever necessary for clarity. -5. πŸš€ **Before submitting a PR, you must publish a blog about your project on our website. PRs without a blog will not be accepted.** - ---- +![Line](https://user-images.githubusercontent.com/85225156/171937799-8fc9e255-9889-4642-9c92-6df85fb86e82.gif)
-### ❄️ Open Source Programs - - - - - - - - - - - - - - - -
-
- -

JWOC

- 2024 | - 2025 -
-
-
- -

GSSoC

- 2024 | - Ext 2024
- 2025 -
-
-
- -

Hacktoberfest

- 2024 -
-
-
- -

KWOC

- 2024 -
-
-
- -

24 Pull Requests

- 2024 -
-
-
- -

IWOC

- 2025 -
-
-
- -

SWOC

- 2025 -
-
-
- -

DWOC

- 2025 -
-
-
- -

Only Dust

- 2025 -
-
- -![Line](https://user-images.githubusercontent.com/85225156/171937799-8fc9e255-9889-4642-9c92-6df85fb86e82.gif) - # Tip from us πŸ˜‡ ##### It always takes time to understand and learn. So, don't worry at all. We know you have got this! πŸ’ͺ diff --git a/docs/CODE_STRUCTURE.md b/docs/CODE_STRUCTURE.md new file mode 100644 index 00000000..c562597d --- /dev/null +++ b/docs/CODE_STRUCTURE.md @@ -0,0 +1,376 @@ +# Repository Structure + +> [!NOTE] +> The project follows a **monorepo-style structure** with distinct folders for client, server, and documentation to maintain modularity and ease of contribution. +> Contributors can work independently on either the **frontend (client)** or **backend (server)** using the deployed APIs. + +```yaml +code-a2z/ +β”œβ”€β”€ .github/ +β”‚ β”œβ”€β”€ ISSUE_TEMPLATE/ +β”‚ β”‚ β”œβ”€β”€ bug-report.yml +β”‚ β”‚ β”œβ”€β”€ enhancement-request.yml +β”‚ β”‚ └── feature-request.yml +β”‚ β”œβ”€β”€ PULL_REQUEST_TEMPLATE.md +β”‚ β”œβ”€β”€ copilot-instructions.md +β”‚ └── workflows/ +β”‚ β”œβ”€β”€ auto-comment-on-issue.yml +β”‚ β”œβ”€β”€ auto-comment-pr-raise.yml +β”‚ └── format-check.yml +β”œβ”€β”€ .gitignore +β”œβ”€β”€ .husky/ +β”‚ └── pre-commit +β”œβ”€β”€ .prettierignore +β”œβ”€β”€ .prettierrc +β”œβ”€β”€ CODE_OF_CONDUCT.md +β”œβ”€β”€ CONTRIBUTING.md +β”œβ”€β”€ LICENSE +β”œβ”€β”€ README.md +β”œβ”€β”€ client/ +β”‚ β”œβ”€β”€ .env.example +β”‚ β”œβ”€β”€ .vercelignore +β”‚ β”œβ”€β”€ README.md +β”‚ β”œβ”€β”€ eslint.config.js +β”‚ β”œβ”€β”€ index.html +β”‚ β”œβ”€β”€ package-lock.json +β”‚ β”œβ”€β”€ package.json +β”‚ β”œβ”€β”€ public/ +β”‚ β”‚ β”œβ”€β”€ 404.png +β”‚ β”‚ β”œβ”€β”€ full-logo.png +β”‚ β”‚ β”œβ”€β”€ logo.png +β”‚ β”‚ └── vite.svg +β”‚ β”œβ”€β”€ src/ +β”‚ β”‚ β”œβ”€β”€ App.tsx +β”‚ β”‚ β”œβ”€β”€ assets/ +β”‚ β”‚ β”‚ └── react.svg +β”‚ β”‚ β”œβ”€β”€ config/ +β”‚ β”‚ β”‚ └── env.ts +β”‚ β”‚ β”œβ”€β”€ infra/ +β”‚ β”‚ β”‚ β”œβ”€β”€ rest/ +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ apis/ +β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ auth/ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ index.ts +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └── typing.ts +β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ collaboration/ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └── index.ts +β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ collection/ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ index.ts +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └── typing.ts +β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ comment/ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ index.ts +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └── typing.ts +β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ like/ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ index.ts +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └── typing.ts +β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ media/ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └── index.ts +β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ notification/ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ index.ts +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └── typing.ts +β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ project/ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ index.ts +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └── typing.ts +β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ subscriber/ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ index.ts +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └── typing.ts +β”‚ β”‚ β”‚ β”‚ β”‚ └── user/ +β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ index.ts +β”‚ β”‚ β”‚ β”‚ β”‚ └── typing.ts +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ index.ts +β”‚ β”‚ β”‚ β”‚ └── typings/ +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ collaboration.ts +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ collection.ts +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ comment.ts +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ index.ts +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ notification.ts +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ project.ts +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ subscriber.ts +β”‚ β”‚ β”‚ β”‚ └── user.ts +β”‚ β”‚ β”‚ β”œβ”€β”€ states/ +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ auth.ts +β”‚ β”‚ β”‚ β”‚ └── user.ts +β”‚ β”‚ β”‚ └── types/ +β”‚ β”‚ β”‚ β”œβ”€β”€ editorjs-modules.d.ts +β”‚ β”‚ β”‚ └── vite-env.d.ts +β”‚ β”‚ β”œβ”€β”€ main.tsx +β”‚ β”‚ β”œβ”€β”€ modules/ +β”‚ β”‚ β”‚ β”œβ”€β”€ 404/ +β”‚ β”‚ β”‚ β”‚ └── index.tsx +β”‚ β”‚ β”‚ β”œβ”€β”€ change-password/ +β”‚ β”‚ β”‚ β”‚ └── index.tsx +β”‚ β”‚ β”‚ β”œβ”€β”€ edit-profile/ +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ constants/ +β”‚ β”‚ β”‚ β”‚ β”‚ └── index.ts +β”‚ β”‚ β”‚ β”‚ └── index.tsx +β”‚ β”‚ β”‚ β”œβ”€β”€ editor/ +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ components/ +β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ editor-navbar.tsx +β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ project-editor.tsx +β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ publish-form.tsx +β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ tags.tsx +β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ text-editor.tsx +β”‚ β”‚ β”‚ β”‚ β”‚ └── tools.tsx +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ constants/ +β”‚ β”‚ β”‚ β”‚ β”‚ └── index.ts +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ hooks/ +β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ index.ts +β”‚ β”‚ β”‚ β”‚ β”‚ └── use-project-editor.ts +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ index.tsx +β”‚ β”‚ β”‚ β”‚ └── states/ +β”‚ β”‚ β”‚ β”‚ └── index.ts +β”‚ β”‚ β”‚ β”œβ”€β”€ home/ +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ components/ +β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ banner-project-card.tsx +β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ category-button.tsx +β”‚ β”‚ β”‚ β”‚ β”‚ └── no-banner-project.tsx +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ constants/ +β”‚ β”‚ β”‚ β”‚ β”‚ └── index.ts +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ hooks/ +β”‚ β”‚ β”‚ β”‚ β”‚ └── index.ts +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ index.tsx +β”‚ β”‚ β”‚ β”‚ └── states/ +β”‚ β”‚ β”‚ β”‚ └── index.ts +β”‚ β”‚ β”‚ β”œβ”€β”€ manage-projects/ +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ components/ +β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ draft-projects.tsx +β”‚ β”‚ β”‚ β”‚ β”‚ └── publish-projects.tsx +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ hooks/ +β”‚ β”‚ β”‚ β”‚ β”‚ └── index.ts +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ index.tsx +β”‚ β”‚ β”‚ β”‚ └── states/ +β”‚ β”‚ β”‚ β”‚ └── index.ts +β”‚ β”‚ β”‚ β”œβ”€β”€ notification/ +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ components/ +β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ notificationCard.tsx +β”‚ β”‚ β”‚ β”‚ β”‚ └── notificationCommentField.tsx +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ constants/ +β”‚ β”‚ β”‚ β”‚ β”‚ └── index.ts +β”‚ β”‚ β”‚ β”‚ └── index.tsx +β”‚ β”‚ β”‚ β”œβ”€β”€ profile/ +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ components/ +β”‚ β”‚ β”‚ β”‚ β”‚ └── about-user.tsx +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ hooks/ +β”‚ β”‚ β”‚ β”‚ β”‚ └── index.ts +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ index.tsx +β”‚ β”‚ β”‚ β”‚ └── states/ +β”‚ β”‚ β”‚ β”‚ └── index.ts +β”‚ β”‚ β”‚ β”œβ”€β”€ project/ +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ components/ +β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ project-content.tsx +β”‚ β”‚ β”‚ β”‚ β”‚ └── project-interaction.tsx +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ hooks/ +β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ index.ts +β”‚ β”‚ β”‚ β”‚ β”‚ └── use-project-interaction.ts +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ index.tsx +β”‚ β”‚ β”‚ β”‚ └── states/ +β”‚ β”‚ β”‚ β”‚ └── index.ts +β”‚ β”‚ β”‚ β”œβ”€β”€ search/ +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ components/ +β”‚ β”‚ β”‚ β”‚ β”‚ └── user-card.tsx +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ hooks/ +β”‚ β”‚ β”‚ β”‚ β”‚ └── index.ts +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ index.tsx +β”‚ β”‚ β”‚ β”‚ └── states/ +β”‚ β”‚ β”‚ β”‚ └── index.ts +β”‚ β”‚ β”‚ └── user-auth-form/ +β”‚ β”‚ β”‚ β”œβ”€β”€ hooks/ +β”‚ β”‚ β”‚ β”‚ └── index.ts +β”‚ β”‚ β”‚ └── index.tsx +β”‚ β”‚ └── shared/ +β”‚ β”‚ β”œβ”€β”€ components/ +β”‚ β”‚ β”‚ β”œβ”€β”€ atoms/ +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ button/ +β”‚ β”‚ β”‚ β”‚ β”‚ └── index.tsx +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ icon-button/ +β”‚ β”‚ β”‚ β”‚ β”‚ └── index.tsx +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ input-box/ +β”‚ β”‚ β”‚ β”‚ β”‚ └── index.tsx +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ modal/ +β”‚ β”‚ β”‚ β”‚ β”‚ └── index.tsx +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ no-data-msg/ +β”‚ β”‚ β”‚ β”‚ β”‚ └── index.tsx +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ skeleton/ +β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ components/ +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ banner-skeleton.tsx +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ no-banner-skeleton.tsx +β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └── project-skeleton.tsx +β”‚ β”‚ β”‚ β”‚ β”‚ └── index.tsx +β”‚ β”‚ β”‚ β”‚ └── typography/ +β”‚ β”‚ β”‚ β”‚ └── index.tsx +β”‚ β”‚ β”‚ β”œβ”€β”€ molecules/ +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ notification/ +β”‚ β”‚ β”‚ β”‚ β”‚ └── index.tsx +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ page-navigation/ +β”‚ β”‚ β”‚ β”‚ β”‚ └── index.tsx +β”‚ β”‚ β”‚ β”‚ └── theme/ +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ index.tsx +β”‚ β”‚ β”‚ β”‚ └── mui.ts +β”‚ β”‚ β”‚ └── organisms/ +β”‚ β”‚ β”‚ β”œβ”€β”€ comments-wrapper/ +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ components/ +β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ comment-card.tsx +β”‚ β”‚ β”‚ β”‚ β”‚ └── comment-field.tsx +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ hooks/ +β”‚ β”‚ β”‚ β”‚ β”‚ └── index.ts +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ index.tsx +β”‚ β”‚ β”‚ β”‚ └── states/ +β”‚ β”‚ β”‚ β”‚ └── index.ts +β”‚ β”‚ β”‚ β”œβ”€β”€ navbar/ +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ components/ +β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ render-menu.tsx +β”‚ β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ render-mobile-menu.tsx +β”‚ β”‚ β”‚ β”‚ β”‚ └── subscribe.tsx +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ constants/ +β”‚ β”‚ β”‚ β”‚ β”‚ └── index.ts +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ hooks/ +β”‚ β”‚ β”‚ β”‚ β”‚ └── index.ts +β”‚ β”‚ β”‚ β”‚ └── index.tsx +β”‚ β”‚ β”‚ └── sidebar/ +β”‚ β”‚ β”‚ β”œβ”€β”€ hooks/ +β”‚ β”‚ β”‚ β”‚ └── index.ts +β”‚ β”‚ β”‚ └── index.tsx +β”‚ β”‚ β”œβ”€β”€ hooks/ +β”‚ β”‚ β”‚ β”œβ”€β”€ use-auth.ts +β”‚ β”‚ β”‚ β”œβ”€β”€ use-debounce.ts +β”‚ β”‚ β”‚ β”œβ”€β”€ use-device.ts +β”‚ β”‚ β”‚ β”œβ”€β”€ use-notification.ts +β”‚ β”‚ β”‚ β”œβ”€β”€ use-theme.ts +β”‚ β”‚ β”‚ └── use-throttle-fetch.ts +β”‚ β”‚ β”œβ”€β”€ states/ +β”‚ β”‚ β”‚ β”œβ”€β”€ notification.ts +β”‚ β”‚ β”‚ └── theme.ts +β”‚ β”‚ └── utils/ +β”‚ β”‚ β”œβ”€β”€ api-interceptor.ts +β”‚ β”‚ β”œβ”€β”€ date.ts +β”‚ β”‚ β”œβ”€β”€ local.ts +β”‚ β”‚ └── regex.ts +β”‚ β”œβ”€β”€ tsconfig.json +β”‚ β”œβ”€β”€ vercel.json +β”‚ └── vite.config.ts +β”œβ”€β”€ docs/ +β”‚ β”œβ”€β”€ Code A2Z.postman_collection.json +β”‚ β”œβ”€β”€ FORMATTING.md +β”‚ └── SETUP.md +β”œβ”€β”€ eslint.config.mjs +β”œβ”€β”€ package-lock.json +β”œβ”€β”€ package.json +└── server/ +β”œβ”€β”€ .dockerignore +β”œβ”€β”€ .env.example +β”œβ”€β”€ Dockerfile +β”œβ”€β”€ docker-compose.yaml +β”œβ”€β”€ index.js +β”œβ”€β”€ package-lock.json +β”œβ”€β”€ package.json +└── src/ +β”œβ”€β”€ config/ +β”‚ β”œβ”€β”€ cloudinary.js +β”‚ β”œβ”€β”€ db.js +β”‚ β”œβ”€β”€ env.js +β”‚ └── resend.js +β”œβ”€β”€ constants/ +β”‚ β”œβ”€β”€ db.js +β”‚ └── index.js +β”œβ”€β”€ controllers/ +β”‚ β”œβ”€β”€ auth/ +β”‚ β”‚ β”œβ”€β”€ change-password.js +β”‚ β”‚ β”œβ”€β”€ login.js +β”‚ β”‚ β”œβ”€β”€ logout.js +β”‚ β”‚ β”œβ”€β”€ refresh.js +β”‚ β”‚ β”œβ”€β”€ signup.js +β”‚ β”‚ └── utils/ +β”‚ β”‚ └── index.js +β”‚ β”œβ”€β”€ collaboration/ +β”‚ β”‚ β”œβ”€β”€ accept-invite.js +β”‚ β”‚ β”œβ”€β”€ invite-collab.js +β”‚ β”‚ β”œβ”€β”€ list-collab.js +β”‚ β”‚ └── reject-invite.js +β”‚ β”œβ”€β”€ collection/ +β”‚ β”‚ β”œβ”€β”€ create-collection.js +β”‚ β”‚ β”œβ”€β”€ delete-collection.js +β”‚ β”‚ β”œβ”€β”€ remove-project.js +β”‚ β”‚ β”œβ”€β”€ save-project.js +β”‚ β”‚ └── sort-project.js +β”‚ β”œβ”€β”€ comment/ +β”‚ β”‚ β”œβ”€β”€ add-comment.js +β”‚ β”‚ β”œβ”€β”€ delete-comment.js +β”‚ β”‚ β”œβ”€β”€ get-comments.js +β”‚ β”‚ └── get-replies.js +β”‚ β”œβ”€β”€ like/ +β”‚ β”‚ β”œβ”€β”€ like-project.js +β”‚ β”‚ └── like-status.js +β”‚ β”œβ”€β”€ media/ +β”‚ β”‚ └── upload.image.js +β”‚ β”œβ”€β”€ notification/ +β”‚ β”‚ β”œβ”€β”€ all-notifications-count.js +β”‚ β”‚ β”œβ”€β”€ get-notifications.js +β”‚ β”‚ └── notification-status.js +β”‚ β”œβ”€β”€ project/ +β”‚ β”‚ β”œβ”€β”€ create-project.js +β”‚ β”‚ β”œβ”€β”€ delete-project.js +β”‚ β”‚ β”œβ”€β”€ get-all-projects.js +β”‚ β”‚ β”œβ”€β”€ get-project.js +β”‚ β”‚ β”œβ”€β”€ search-projects-count.js +β”‚ β”‚ β”œβ”€β”€ search-projects.js +β”‚ β”‚ β”œβ”€β”€ total-projects-count.js +β”‚ β”‚ β”œβ”€β”€ trending-projects.js +β”‚ β”‚ β”œβ”€β”€ user-projects-count.js +β”‚ β”‚ └── user-projects.js +β”‚ β”œβ”€β”€ subscriber/ +β”‚ β”‚ β”œβ”€β”€ get-all-subscribers.js +β”‚ β”‚ β”œβ”€β”€ subscribe-email.js +β”‚ β”‚ └── unsubscribe-email.js +β”‚ └── user/ +β”‚ β”œβ”€β”€ get-profile.js +β”‚ β”œβ”€β”€ search-user.js +β”‚ β”œβ”€β”€ update-profile-img.js +β”‚ └── update-profile.js +β”œβ”€β”€ logger/ +β”‚ β”œβ”€β”€ morgan.js +β”‚ └── winston.js +β”œβ”€β”€ middlewares/ +β”‚ β”œβ”€β”€ auth.limiter.js +β”‚ β”œβ”€β”€ auth.middleware.js +β”‚ β”œβ”€β”€ error.handler.js +β”‚ β”œβ”€β”€ general.limiter.js +β”‚ β”œβ”€β”€ logging.middleware.js +β”‚ β”œβ”€β”€ multer.middleware.js +β”‚ β”œβ”€β”€ sanitize.middleware.js +β”‚ └── security.middleware.js +β”œβ”€β”€ models/ +β”‚ β”œβ”€β”€ collaboration.model.js +β”‚ β”œβ”€β”€ collection.model.js +β”‚ β”œβ”€β”€ comment.model.js +β”‚ β”œβ”€β”€ notification.model.js +β”‚ β”œβ”€β”€ project.model.js +β”‚ β”œβ”€β”€ subscriber.model.js +β”‚ └── user.model.js +β”œβ”€β”€ routes/ +β”‚ β”œβ”€β”€ api/ +β”‚ β”‚ β”œβ”€β”€ auth.routes.js +β”‚ β”‚ β”œβ”€β”€ collaboration.routes.js +β”‚ β”‚ β”œβ”€β”€ collections.routes.js +β”‚ β”‚ β”œβ”€β”€ comment.routes.js +β”‚ β”‚ β”œβ”€β”€ like.routes.js +β”‚ β”‚ β”œβ”€β”€ media.routes.js +β”‚ β”‚ β”œβ”€β”€ monitor.routes.js +β”‚ β”‚ β”œβ”€β”€ notification.routes.js +β”‚ β”‚ β”œβ”€β”€ project.routes.js +β”‚ β”‚ β”œβ”€β”€ subscriber.routes.js +β”‚ β”‚ └── user.routes.js +β”‚ └── index.js +β”œβ”€β”€ schemas/ +β”‚ β”œβ”€β”€ collaboration.schema.js +β”‚ β”œβ”€β”€ collection.schema.js +β”‚ β”œβ”€β”€ comment.schema.js +β”‚ β”œβ”€β”€ notification.schema.js +β”‚ β”œβ”€β”€ project.schema.js +β”‚ β”œβ”€β”€ subscriber.schema.js +β”‚ └── user.schema.js +β”œβ”€β”€ server.js +β”œβ”€β”€ typings/ +β”‚ └── index.js +└── utils/ +β”œβ”€β”€ regex.js +└── response.js +``` diff --git a/docs/CONTRIBUTORS.md b/docs/CONTRIBUTORS.md new file mode 100644 index 00000000..c5b4acd8 --- /dev/null +++ b/docs/CONTRIBUTORS.md @@ -0,0 +1,15 @@ +# Contributor Showcase + +> [!IMPORTANT] +> **Code A2Z** is a collaborative developer-first ecosystem. +> Every contribution β€” from code commits to documentation, design, and issue tracking β€” shapes the project’s foundation. + +| Contributor | Highlights | Issue/PR | +| :----------------------------------------------------------- | :---------------------------------------------------------------------- | :------- | +| **[@Avdhesh-Varshney](https://github.com/Avdhesh-Varshney)** | Architecture design, MUI migration, JOTAI integration, Resend API setup | | +| **[@Code-A2Z](https://github.com/Code-A2Z)** | Repository management, issue templates, and release coordination | | +| _Open for You!_ | Pick an issue, open a PR, and join the Code A2Z development journey | () | + +> [!TIP] +> Want to contribute? +> Check out the [**Good First Issues**](https://github.com/Code-A2Z/code-a2z/issues?q=is%3Aissue+is%3Aopen+label%3A"good+first+issue"), [**Help Wanted Issues**](https://github.com/Code-A2Z/code-a2z/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22help%20wanted%20%F0%9F%92%B0%22) and follow the [**Contribution Guidelines**](../CONTRIBUTING.md). From 02ee4600f221ff230ea5714fe854f3b93fd7d65f Mon Sep 17 00:00:00 2001 From: Avdhesh-Varshney Date: Thu, 13 Nov 2025 23:42:26 +0530 Subject: [PATCH 2/5] pr template update --- .github/PULL_REQUEST_TEMPLATE.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 980d1800..23727d34 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,7 +1,17 @@ - +### Pull Requests Review Criteria + +> [!CAUTION] +> PRs that fail to meet these review standards will be automatically flagged and may be rejected by maintainers. + +- [ ] Filled out this PR template properly +- [ ] Did **not** commit directly to `main` +- [ ] Limited commits (max 3–4 unless permitted by Admin/Mentors) +- [ ] Added comments in complex parts of code Closes: + + ### Describe the add-ons or changes you've made πŸ“ƒ @@ -10,6 +20,6 @@ Closes: -### Note to reviewers πŸ“„ +### Note to reviewers (Optional) πŸ“„ From 01051918d5ba5eda50914dafca4ad18e3adfff68 Mon Sep 17 00:00:00 2001 From: Avdhesh-Varshney Date: Mon, 17 Nov 2025 23:07:50 +0530 Subject: [PATCH 3/5] add more tasks & contributors showcase --- README.md | 66 ++++++++++++++++++++------------------------ docs/CONTRIBUTORS.md | 12 ++++---- 2 files changed, 37 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index 10b4a886..56181646 100644 --- a/README.md +++ b/README.md @@ -18,13 +18,18 @@ -

+

+ +

-

+ +

+ +

@@ -87,28 +92,29 @@ Future releases will expand into AI-driven productivity tools, personalized feed > These features represent the current strengths and future goals of **Code A2Z**, focused on scalability, collaboration, and developer productivity. > Each item listed here is open for contribution, proposal, and improvement. -- [x] MUI-Based Design System (https://github.com/Code-A2Z/code-a2z/pull/1317, https://github.com/Code-A2Z/code-a2z/pull/1291) -- [x] Custom Notification Engine (https://github.com/Code-A2Z/code-a2z/pull/1317) -- [x] JOTAI State Management Integration (https://github.com/Code-A2Z/code-a2z/pull/1317) -- [x] Modular Client & Server Architecture (https://github.com/Code-A2Z/code-a2z/pull/1317, https://github.com/Code-A2Z/code-a2z/pull/1304) -- [x] Real-Time Editor Synchronization (https://github.com/Code-A2Z/code-a2z/pull/1317, https://github.com/Code-A2Z/code-a2z/pull/1104) -- [x] Subscription & Mailing via RESEND API (https://github.com/Code-A2Z/code-a2z/pull/1294) -- [x] Personal Project Collections (https://github.com/Code-A2Z/code-a2z/issues/1180) -- [x] In-App Project Collaboration (https://github.com/Code-A2Z/code-a2z/issues/1179) -- [ ] User Feedback Collection System -- [ ] Personalized Learning Feed -- [ ] Role Based Dashboard System -- [ ] Developer Collaboration Matchmaking -- [ ] Project & User Ranking Mechanism -- [ ] Multi-Language Localization -- [ ] Collection & Bookmarking System -- [ ] Collaboration Invitations via Email -- [ ] AI-Powered Real-Time Chat Channels -- [ ] Dynamic Project Activity Dashboard -- [ ] Private Notes Per Project -- [ ] Habit & Streak Tracker -- [ ] LLM-Generated Quiz System -- [ ] Integrated Video Streaming Platform +- [x] Unified MUI Component & Design Framework (https://github.com/Code-A2Z/code-a2z/pull/1317, https://github.com/Code-A2Z/code-a2z/pull/1291) +- [x] Custom In-App Notification Infrastructure (https://github.com/Code-A2Z/code-a2z/pull/1317) +- [x] Jotai-Driven Global State Architecture (https://github.com/Code-A2Z/code-a2z/pull/1317) +- [x] Separated & Modularized Client–Server Codebase (https://github.com/Code-A2Z/code-a2z/pull/1317, https://github.com/Code-A2Z/code-a2z/pull/1304) +- [x] Real-Time Collaborative Code Editing Engine (https://github.com/Code-A2Z/code-a2z/pull/1317, https://github.com/Code-A2Z/code-a2z/pull/1104) +- [x] Subscription & Email Automation via Resend (https://github.com/Code-A2Z/code-a2z/pull/1294) +- [ ] User Insight & Feedback Collection Module (https://github.com/Code-A2Z/code-a2z/issues/1170) +- [ ] Developer Skill-Based Matchmaking System () +- [ ] Project & Profile Reputation/Ratings Engine () +- [ ] Advanced Project Bookmarking & Saved Collections (https://github.com/Code-A2Z/code-a2z/issues/1180) +- [ ] Role-Aware Dashboard & Permissions System () +- [ ] Email-Based Collaboration Invitations (https://github.com/Code-A2Z/code-a2z/issues/1179) +- [ ] Open Public JSON APIs for Project Data () +- [ ] Multi-Language Localization & i18n Support (https://github.com/Code-A2Z/code-a2z/issues/1001) +- [ ] AI-Powered Real-Time Discussion Channels (https://github.com/Code-A2Z/code-a2z/issues/788) +- [ ] Live Project Activity Analytics Dashboard (https://github.com/Code-A2Z/code-a2z/issues/1182) +- [ ] Private Project-Specific Notes (https://github.com/Code-A2Z/code-a2z/issues/249) +- [ ] Task Creation & Project Taskboard (https://github.com/Code-A2Z/code-a2z/issues/38) +- [ ] Gamified Habit Tracking & Streak System (https://github.com/Code-A2Z/code-a2z/issues/51) +- [ ] PR Workflow Automation via Webhooks (https://github.com/Code-A2Z/code-a2z/issues/1116) +- [ ] AI-Generated Quiz & Assessment Engine (https://github.com/Code-A2Z/code-a2z/issues/48) +- [ ] Personalized Learning Recommendations Feed (https://github.com/Code-A2Z/code-a2z/issues/1211) +- [ ] AI-Powered Video Streaming & Knowledge Sharing Platform (https://github.com/Code-A2Z/code-a2z/issues/30) > [!TIP] > Each feature aligns with Code A2Z’s mission to make collaborative development **simpler, faster, and smarter**. @@ -142,16 +148,4 @@ Be part of our developer space where we brainstorm, debug, and build together. > All discussions and contributions follow our [**Code of Conduct**](./CODE_OF_CONDUCT.md). > Respect, collaboration, and professionalism are non-negotiable values of the **Code A2Z** community. -![Line](https://user-images.githubusercontent.com/85225156/171937799-8fc9e255-9889-4642-9c92-6df85fb86e82.gif) - -

- -# Tip from us πŸ˜‡ - -##### It always takes time to understand and learn. So, don't worry at all. We know you have got this! πŸ’ͺ - -### Show some  β€οΈ  by  πŸŒŸ  this repository! - -
- diff --git a/docs/CONTRIBUTORS.md b/docs/CONTRIBUTORS.md index c5b4acd8..dc8bf6a6 100644 --- a/docs/CONTRIBUTORS.md +++ b/docs/CONTRIBUTORS.md @@ -4,11 +4,13 @@ > **Code A2Z** is a collaborative developer-first ecosystem. > Every contribution β€” from code commits to documentation, design, and issue tracking β€” shapes the project’s foundation. -| Contributor | Highlights | Issue/PR | -| :----------------------------------------------------------- | :---------------------------------------------------------------------- | :------- | -| **[@Avdhesh-Varshney](https://github.com/Avdhesh-Varshney)** | Architecture design, MUI migration, JOTAI integration, Resend API setup | | -| **[@Code-A2Z](https://github.com/Code-A2Z)** | Repository management, issue templates, and release coordination | | -| _Open for You!_ | Pick an issue, open a PR, and join the Code A2Z development journey | () | +| Contributor | Highlights | Issue/PR | +| :------------------------------------------------------- | :---------------------------------------------------------------------- | :----------------------------------------------- | +| [@Avdhesh-Varshney](https://github.com/Avdhesh-Varshney) | Architecture design, MUI migration, JOTAI integration, Resend API setup | | +| [@Vriti62](https://github.com/Vriti62) | Backend Implementation of Project Bookmarking & Saved Collections | https://github.com/Code-A2Z/code-a2z/issues/1180 | +| [@vansh909](https://github.com/vansh909) | Backend Implementation Collaboration Invitations through Email | https://github.com/Code-A2Z/code-a2z/issues/1179 | +| [@Maxzovert](https://github.com/Maxzovert) | Implement Ctrl/Cmd + K Search Shortcut | https://github.com/Code-A2Z/code-a2z/issues/1176 | +| _Open for You!_ | Pick an issue, open a PR, and join the Code A2Z development journey | () | > [!TIP] > Want to contribute? From a90814b73a7a6024e505eeca662a716239ad5329 Mon Sep 17 00:00:00 2001 From: Avdhesh-Varshney Date: Mon, 17 Nov 2025 23:13:53 +0530 Subject: [PATCH 4/5] rmv false ignores --- .gitignore | 5 ----- .prettierignore | 3 --- 2 files changed, 8 deletions(-) diff --git a/.gitignore b/.gitignore index 6cfc995f..f30b7757 100644 --- a/.gitignore +++ b/.gitignore @@ -134,8 +134,3 @@ connect.lock # typescript *.tsbuildinfo next-env.d.ts - - -######################################## Secret files ######################################## -kaggle.json -firebase-adminsdk.json diff --git a/.prettierignore b/.prettierignore index bdcbf86f..e24ed165 100644 --- a/.prettierignore +++ b/.prettierignore @@ -33,6 +33,3 @@ pnpm-lock.yaml # OS .DS_Store Thumbs.db - -# Ignore markdown files in projects directory (might contain code snippets that shouldn't be formatted) -projects/**/*.md From 4adf9f34dcd1acdc1a8b5f8d804d0f0d022257b5 Mon Sep 17 00:00:00 2001 From: Avdhesh-Varshney Date: Mon, 17 Nov 2025 23:30:56 +0530 Subject: [PATCH 5/5] update SETUP.md with basic guidelines --- docs/CONTRIBUTORS.md | 14 ++-- docs/SETUP.md | 188 +++++++++++++++++++++++++++++-------------- 2 files changed, 133 insertions(+), 69 deletions(-) diff --git a/docs/CONTRIBUTORS.md b/docs/CONTRIBUTORS.md index dc8bf6a6..f22e53d5 100644 --- a/docs/CONTRIBUTORS.md +++ b/docs/CONTRIBUTORS.md @@ -4,13 +4,13 @@ > **Code A2Z** is a collaborative developer-first ecosystem. > Every contribution β€” from code commits to documentation, design, and issue tracking β€” shapes the project’s foundation. -| Contributor | Highlights | Issue/PR | -| :------------------------------------------------------- | :---------------------------------------------------------------------- | :----------------------------------------------- | -| [@Avdhesh-Varshney](https://github.com/Avdhesh-Varshney) | Architecture design, MUI migration, JOTAI integration, Resend API setup | | -| [@Vriti62](https://github.com/Vriti62) | Backend Implementation of Project Bookmarking & Saved Collections | https://github.com/Code-A2Z/code-a2z/issues/1180 | -| [@vansh909](https://github.com/vansh909) | Backend Implementation Collaboration Invitations through Email | https://github.com/Code-A2Z/code-a2z/issues/1179 | -| [@Maxzovert](https://github.com/Maxzovert) | Implement Ctrl/Cmd + K Search Shortcut | https://github.com/Code-A2Z/code-a2z/issues/1176 | -| _Open for You!_ | Pick an issue, open a PR, and join the Code A2Z development journey | () | +| Contributor | Highlights | Issue/PR | +| :------------------------------------------------------- | :---------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------- | +| [@Avdhesh-Varshney](https://github.com/Avdhesh-Varshney) | Architecture design, MUI migration, JOTAI integration, Resend API setup | https://github.com/Code-A2Z/code-a2z/issues/1205, https://github.com/Code-A2Z/code-a2z/issues/1273 | +| [@Vriti62](https://github.com/Vriti62) | Backend Implementation of Project Bookmarking & Saved Collections | https://github.com/Code-A2Z/code-a2z/issues/1180 | +| [@vansh909](https://github.com/vansh909) | Backend Implementation Collaboration Invitations through Email | https://github.com/Code-A2Z/code-a2z/issues/1179 | +| [@Maxzovert](https://github.com/Maxzovert) | Implement Ctrl/Cmd + K Search Shortcut | https://github.com/Code-A2Z/code-a2z/issues/1176 | +| _Open for You!_ | Pick an issue, open a PR, and join the Code A2Z development journey | () | > [!TIP] > Want to contribute? diff --git a/docs/SETUP.md b/docs/SETUP.md index fb73a2b4..5e295e81 100644 --- a/docs/SETUP.md +++ b/docs/SETUP.md @@ -1,71 +1,79 @@ -# Local Development Setup +# SETUP PROJECT -This guide explains two ways to run the project locally: +## Local Development Setup -1. Full Project Development β€” Your own MongoDB server is running locally. -2. Frontend Development β€” Using the deployed backend (`https://code-a2z.onrender.com`) without running your own MongoDB server. +This guide explains two ways to run the **Code A2Z** project locally: -Both setups are already shown in the `.env.example` file. -You only need to uncomment the relevant lines for the setup you choose. +1. **Full Project Development** β€” Run backend + frontend + local MongoDB +2. **Frontend-Only Development** β€” Run only the client using the deployed backend: `https://code-a2z-server.vercel.app` + +> [!IMPORTANT] +> Your `.env.example` already contains **both modes**. +> Simply copy β†’ rename β†’ uncomment the section you need. --- -### 1. Full Project Development (MongoDB running locally) +## 1. Full Project Development (Backend + Frontend + Local MongoDB) -In this setup, both backend and frontend run on your machine. +This mode is recommended for contributors working on backend features, APIs, authentication, or database-related flows. -#### Requirements +### Requirements -- Node.js (LTS version) -- MongoDB installed and running locally (default port `27017`) +- Node.js (LTS recommended) - npm +- MongoDB installed locally (`mongodb://127.0.0.1:27017/`) -#### Steps +> [!NOTE] +> If MongoDB is not running, the backend server **will fail on startup**. -##### 1. Clone the repository +### Step 1 β€” Clone the Repository ```bash -git clone https://github.com//repo-name.git -cd repo-name +git clone https://github.com/Code-A2Z/code-a2z.git +cd code-a2z ``` -##### 2. Install dependencies +### Step 2 β€” Install Dependencies ```bash -npm install +npm run install:all ``` -##### 3. Configure environment variables +> [!TIP] +> You can also use `npm run install:client` to install all depedencies of Frontend. +> Similar for Backend depedencies `npm run install:server`. + +### Step 3 β€” Configure Environment Variables + +Copy the example env file: -Open `.env.example`, uncomment the **Local Development** section, -and copy it to `.env`: +```bash +cd client +cp .env.example .env +``` ```bash +cd server cp .env.example .env ``` -Example local development variables: +> [!TIP] +> Always restart your server after modifying `.env` values. -```env -PORT=8000 -NODE_ENV=production # Change to 'development' for local development -MONGODB_URL=mongodb://127.0.0.1:27017/code-a2z -JWT_SECRET_ACCESS_KEY=your_secret_key -JWT_EXPIRES_IN=7 # (Numerical value) +### Step 4 β€” Start Backend & Frontend -# Cloudinary Configuration (for media uploads) -CLOUDINARY_CLOUD_NAME=your_cloud_name -CLOUDINARY_API_KEY=your_api_key -CLOUDINARY_API_SECRET=your_api_secret +There are 2 ways to run the whole project in terminals, -# Email Configuration (Gmail) -ADMIN_EMAIL=avdhesh.opensource@gmail.com -ADMIN_PASSWORD=email_password_here -``` +- Single terminal for client & server +- Two seprate terminals -##### 4. Run backend and frontend +#### Using single terminal inside the repo -Open two terminals: +```bash +npm run dev +``` + +#### Using two separate terminals inside the repo Backend: @@ -73,63 +81,119 @@ Backend: npm run server ``` -Frontend: +Frontend (Vite): ```bash npm run client ``` +Your local environment is now fully running. + --- -### 2. Frontend Development (No local MongoDB) +## 2. Frontend-Only Development (Using Deployed Backend) + +Choose this mode if you work only on: -If you are working on Frontend changes, no need to run the BE locally, directly use BE deployed URL. +- UI/UX +- Components +- Pages +- Client-side routing or logic -#### Steps +You do **not** need MongoDB or backend setup. -##### 1. Clone the repository +### Step 1 β€” Clone the Repository ```bash -git clone https://github.com//repo-name.git -cd repo-name +git clone https://github.com/Code-A2Z/code-a2z.git +cd code-a2z ``` -##### 2. Install dependencies +### Step 2 β€” Install Dependencies ```bash -npm install +npm run install:all ``` -##### 3. Configure environment variables +### Step 3 β€” Configure Environment Variable -Open `.env.example` and copy it to `.env`: +Copy `.env.example`: ```bash +cd client cp .env.example .env ``` -Example frontend-only variables: - -```env -VITE_SERVER_DOMAIN=https://code-a2z.onrender.com +```bash +cd server +cp .env.example .env ``` -You do not need to set `MONGODB_URL` or run the backend. +That’s all β€” no DB connection needed. + +> [!NOTE] +> This mode automatically uses the hosted backend. +> Backend routes and CRUD operations will still work normally. -##### 4. Start the frontend +### Step 4 β€” Run Frontend ```bash -npm run dev +npm run client ``` -Your app will connect directly to the deployed backend. +--- + +## Switching Between Modes + +> [!WARNING] +> Changing `.env` values requires restarting your dev server. + +| Mode | Required Variables | MongoDB Needed | Backend Needed | +| -------------------- | ------------------------------------- | -------------- | -------------------------- | +| **Full Development** | `MONGODB_URL`, Cloudinary, Email, JWT | Yes | Yes | +| **Frontend-Only** | `VITE_SERVER_DOMAIN` | No | No (uses deployed backend) | + +--- + +## Common Pitfalls & Fixes + +> [!CAUTION] +> These mistakes are extremely common for first-time contributors. + +### Backend fails to start + +**Reason:** MongoDB is not running +**Fix:** Start the MongoDB service or install MongoDB + +### Frontend cannot reach the backend + +**Reason:** Wrong `VITE_SERVER_DOMAIN` +**Fix:** + +- Local mode β†’ set to `http://localhost:8000/api` +- Frontend mode β†’ set to deployed backend + +### File uploads not working + +**Reason:** Invalid Cloudinary credentials +**Fix:** Double-check the 3 Cloudinary keys + +### Port already in use + +Stop the running process or change the port in `.env`. --- -### Common Pitfalls +## Final Tips + +> [!TIP] +> Keep separate `.env` files for: +> +> - **Local Backend Mode** +> - **Frontend-Only Mode** +> +> This prevents accidental misconfiguration and avoids startup errors. -- If you try to run backend code without MongoDB running, you’ll get connection errors. -- Check the respective PORTS are free to use in your machine. -- Keep `.env` variables separate for each mode (local backend vs deployed backend). -- The `.env.example` file already contains both modes β€” just uncomment the one you need. -- If switching between modes, update `VITE_SERVER_DOMAIN` and restart the dev server. +> [!NOTE] +> This project uses a modular structure for both client & server. +> When adding new modules, follow the established folder patterns to maintain consistency.