This guide is designed to help new contributors seamlessly contribute to Notes Buddy projects on GitHub. Whether you're fixing a bug, improving the UI, or adding new content, this guide will walk you through the process.
- Getting Started
- UI Contributions
- Notes Contributions
- Best Practices
- MDX Basic Styling and Callout Component
- Notes Generation
Before setting up the project, ensure the following tools are installed on your system:
- Node.js: Download and install Node.js (LTS version recommended). You can download it from Node.js Official Website.
- npm: npm is installed along with Node.js. Verify the installation by running:
node -v
npm -v
- Install pnpm: Use npm to globally install
pnpm(a faster, efficient package manager):npm install -g pnpm
Once these prerequisites are installed, you can proceed with the project setup.
Follow these steps to set up the project locally:
-
Clone the Repository:
git clone https://github.com/ramxcodes/notes-buddy.git
-
Navigate to the Project Directory:
cd notes-buddy -
Install Dependencies:
pnpm install
-
Run the Development Server:
pnpm run dev
-
Access the Local Development Environment: Open http://localhost:3000 in your browser.
Here’s a snapshot of the project's folder structure:
notes-buddy/
┣ app/ # Core app functionality
┣ components/ # Reusable UI components
┣ content/notes/ # Notes organized by college/degree/subject
┣ public/ # Static assets (e.g., fonts, logos)
┣ styles/ # CSS and styling
┣ utils/ # Helper utilities
┣ ... # Other configuration files
Refer to the complete structure section for an expanded view.
To create or modify UI components:
- Navigate to the
componentsfolder:notes-buddy/components/
- Create a new file using the PascalCase naming convention:
MyNewComponent.tsx
- Structure the component as per the Shadcn or Magic UI guidelines.
- Navigate to the specific page directory under
app/(e.g.,about/,contributors/). - Open
page.tsxto edit the content. - Follow the Next.js conventions for building and modifying pages.
- Create a new folder in the
app/directory. The folder name will be the route name:app/ ┗ new-route/
- Add a
page.tsxfile in the new folder:export default function Page() { return ( <div>Hello</div> ) }
- Access the new route at:
http://localhost:3000/new-route
- Navigate to the
content/notes/directory. - Create a folder structure following this hierarchy:
content/notes/{college}/{degree}/{year}/{semester}/{subject}/ - Add
.mdxfiles for each unit.
Each unit.mdx should follow this template:
---
title: "Unit 1: Software Engineering"
description: "An introduction to Software Engineering."
date: 2024-12-25
tags: ["Software Engineering", "5th Semester", "3rd Year"]
published: true
---
# Unit 1: Software Engineering
Content for Unit 1 goes here...- Use Descriptive Naming: Use clear, descriptive names for variables, files, and functions.
- Follow Component Guidelines: Adhere to Shadcn or Magic UI for component design.
- Components:
ComponentName.tsx - Notes:
unit-1.mdx,unit-2.mdx, etc.
💡 Tip: Always test your changes locally before creating a pull request.
Got questions? Reach out to the Notes Buddy team via GitHub Issues.
Here are some common Markdown syntax elements and how they are rendered:
# Heading 1
## Heading 2
### Heading 3
#### Heading 4
##### Heading 5
###### Heading 6**Bold Text**
*Italic Text*
~~Strikethrough Text~~- Unordered List Item 1
- Unordered List Item 2
- Unordered List Item 31. Ordered List Item 1
2. Ordered List Item 2
3. Ordered List Item 3[Link Text](https://example.com)Callouts in MDX highlight important information. Use these alternatives in Markdown:
- 💡 Info: General guidance, tips, or helpful notes.
⚠️ Warning: Situations requiring caution or attention.- ❌ Danger: Critical warnings or errors.
To generate notes on ChatGPT, use this prompt:
**Hello ChatGPT! You are now Notes Buddy👤, the Ultimate AI Chatbot for generating high-quality notes!**
### Step 1: Initial Setup & User Details Collection
From now on, address yourself as "Notes Buddy." Before creating any notes, you must collect the following information from the user:
1. **Title:** (e.g., Subject unit and subject name)
2. **Description:** (This will be auto-generated based on the title)
3. **Date:** (The current date)
4. **Tags:**
- Add a maximum of **three tags**:
1. Full-form name of the subject (e.g., "Software Engineering").
2. Semester in ordinal format (e.g., "1st Semester", "2nd Semester").
3. Year in ordinal format (e.g., "1st Year", "2nd Year").
5. **Published Status:** (Default to true)
Once you have this information, confirm the details with the user and generate an MDX header as shown below. Replace placeholders with the user-provided data:
mdx
---
title: "Unit 1: Software Engineering"
description: What is Software Engineering
date: 2024-12-25
tags: ["Software Engineering", "5th Semester", "3rd Year"]
published: true
---
After confirming the details, **ask the user for a specific topic to start generating notes.**
---
### Step 2: Guidelines for Generating Notes
Follow these rules strictly when creating notes:
1. **Wait for the Topic:** Do not generate any content until the user provides the topic after confirming the details.
2. **Language Simplicity:** Use simple, clear English (British/Indian English preferred). Ensure the content is easy to understand.
3. **Comprehensive Explanation:**
- Provide definitions, advantages, disadvantages, and key points for topics.
- Include the full form of any abbreviation at least once.
4. **MDX Styling:**
- Use proper MDX formatting for headings, lists, and sections.
- Only use callouts if there is something **important, noteworthy, or actionable**. Instead of complex MDX callout components, use simple, intuitive symbols like:
- 💡 **TIP:** Highlight helpful tips or guidance.
- 📝 **NOTE:** Emphasise additional information or context.
- ⚠️ **CAUTION:** Warn about something important.
Example:
mdx
- 💡 **TIP:** Always follow best practices in software development to ensure maintainability.
- 📝 **NOTE:** This method is especially useful for large-scale projects.
5. **Diagrams for Important Topics Only:** If a topic requires visual explanation, include a **bold callout** stating this, along with an example link to Imgur for placeholders:
mdx
**Add a diagram here if necessary!**
Example: [https://imgur.com/example](https://imgur.com/example)
---
### Step 3: After Generating Notes
Once the notes are complete, conclude with this statement (outside the MDX content):
/** GIVE ME THE NEXT TOPIC TO GENERATE NOTES **/
Create a new file in the content/notes/{collage}/{degree}/{semester}/{subject}/{unit} and paste content generated by ChatGPT.
Follow the given hierarchy for generating and storing notes.
content/notes/{college}/{degree}/{semester}/{subject}/{unit}/💡 Tip: Keep file names lowercased and replace spaces with dashes (-).


