Skip to content

Latest commit

 

History

60 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 NoteX

Astro Version NPM MIT License TypeScript

NoteX is a modern, fast, and lightweight academic notes platform built with Astro. It is designed to organize university notes by semester and subject while providing a clean reading experience for technical and mathematics-heavy content.

The project uses Markdown-based notes, allowing content to be written and maintained as simple files while Astro handles routing, rendering, and static site generation.


✨ Features

  • ⚡ Fast & Lightweight — Built with Astro for efficient static page generation and minimal client-side JavaScript.
  • 📝 Markdown Notes — Write and organize notes using Markdown files.
  • 🧩 MDX Support — Supports MDX for notes that require interactive or reusable components.
  • 🧮 Mathematical Notation — Supports LaTeX-style mathematical expressions through KaTeX.
  • 🎓 Semester Organization — Notes are organized by semester and subject for easy navigation.
  • 📚 Subject-Based Structure — Each subject has its own dedicated collection of notes and resources.
  • 🖼️ Subject Covers — Dedicated cover images are available for subjects.
  • 🔗 Dynamic Routing — Semester and subject pages are generated using Astro's dynamic routing system.
  • 📱 Responsive Interface — Designed to provide a comfortable reading experience across different screen sizes.

🛠️ Tech Stack

Core

  • Framework: Astro
  • Language: TypeScript
  • Styling: CSS
  • Content: Markdown / MDX

Content & Rendering

  • @astrojs/mdx — Adds MDX support to Astro.
  • katex — Renders mathematical expressions.
  • remark-math — Parses mathematical notation in Markdown.
  • rehype-katex — Converts parsed mathematical expressions into KaTeX-rendered HTML.
  • astro-icon — Provides icon support throughout the interface.

📂 Project Structure

The project is organized around semesters, subjects, and their associated notes.

NoteX/
└── src/
    ├── assets/
    │   └── images/
    │       └── subjectsCovers/
    │
    ├── components/
    │   └── ...
    │
    ├── data/
    │   └── notes/
    │       ├── semester-2/
    │       │   ├── biography-of-prophet-pbuh/
    │       │   ├── data-communication-and-networking/
    │       │   ├── digital-logic-and-design/
    │       │   ├── object-oriented-programming/
    │       │   ├── principles-of-software-engineering/
    │       │   └── worship-system-of-islam/
    │       │
    │       ├── semester-3/
    │       │   ├── advance-computer-networking/
    │       │   │   └── images/
    │       │   ├── data-structures-and-algorithms/
    │       │   ├── ethical-system-of-islam/
    │       │   ├── linear-algebra/
    │       │   ├── modern-programming-languages/
    │       │   └── social-system-of-islam/
    │       │
    │       └── semester-4/
    │           ├── database-administration/
    │           ├── english-language/
    │           ├── ideological-studies/
    │           ├── operating-system-concepts/
    │           ├── religions-and-sects/
    │           └── web-technologies/
    │
    ├── icons/
    │
    ├── pages/
    │   ├── semesters/
    │   │   └── [slug]/
    │   │       └── [subject]/
    │   │
    │   └── ...
    │
    └── styles/

Directory Overview

Directory Purpose
src/assets/ Images and other assets processed by Astro
src/assets/images/subjectsCovers/ Cover images for individual subjects
src/components/ Reusable Astro/UI components
src/data/notes/ Academic notes organized by semester and subject
src/icons/ Project icons
src/pages/ Astro pages and dynamic routes
src/pages/semesters/[slug]/[subject]/ Dynamic subject note pages
src/styles/ Global and component-related styles

📚 Notes Organization

Notes are organized hierarchically:

Semester
   ↓
Subject
   ↓
Notes / Resources

For example:

src/data/notes/
└── semester-3/
    └── linear-algebra/
        ├── ...
        └── ...

This structure makes it possible to keep every subject independent while still providing a consistent navigation system throughout the website.


🚀 Getting Started

Prerequisites

Make sure you have the following installed:

  • Node.js: 22.x or newer
  • npm: 10.x or newer
  • Git

Check your installed versions:

node --version
npm --version
git --version

Installation

Clone the repository:

git clone https://github.com/khalidrahmanhanify/NoteX.git

Navigate into the project:

cd NoteX

Install the dependencies:

npm install

💻 Development

Start the local development server:

npm run dev

Astro will start the development server, normally available at:

http://localhost:4321

The development server automatically reloads when files are changed.


🏗️ Production Build

Create an optimized production build:

npm run build

The generated files will be placed in:

dist/

🔍 Preview Production Build

After creating a production build, you can preview it locally:

npm run preview

This allows you to verify the production version before deployment.


⚙️ Configuration

The main Astro configuration is located at:

astro.config.mjs

Other important project configuration files include:

package.json
tsconfig.json

astro.config.mjs

Contains the Astro configuration, integrations, Markdown/MDX configuration, and other framework-level settings.

package.json

Contains project metadata, dependencies, and npm scripts.

tsconfig.json

Contains TypeScript compiler configuration and project-wide type-checking settings.


📝 Adding Notes

New notes can be added to the appropriate semester and subject directory inside:

src/data/notes/

For example, a new note for Linear Algebra would belong under:

src/data/notes/semester-3/linear-algebra/

Keeping notes separated by semester and subject makes the content easier to maintain and allows the application to generate the appropriate pages automatically.


🤝 Contributing

Contributions are welcome.

  1. Fork the repository.
  2. Create a new branch:
git checkout -b feature/your-feature-name
  1. Make your changes.
  2. Commit your changes:
git commit -m "feat: add new feature"
  1. Push the branch:
git push origin feature/your-feature-name
  1. Open a Pull Request.

📄 License

NoteX is distributed under the MIT License.

See the LICENSE file for the complete license text.


👤 Author

Khalid Rahman Hanify


🌟 NoteX

Built to make university notes organized, accessible, and easy to learn from.

About

A website for sharing university notes and resources.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages