Skip to content

LearnLink is a comprehensive educational platform that bridges the gap between students and educators, providing a seamless and interactive learning experience.

Notifications You must be signed in to change notification settings

hikmetbozkurt/LearnLink

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ LearnLink: Connect, Learn, and Grow Together

LearnLink Logo

A comprehensive full-stack educational platform designed to enhance the learning experience

Features β€’ Tech Stack β€’ Architecture β€’ Getting Started β€’ Screenshots β€’ Development β€’ License

TypeScript React Node.js Express PostgreSQL Socket.IO


✨ Features

LearnLink is a comprehensive educational platform that bridges the gap between students and educators, providing a seamless and interactive learning experience. Key features include:

πŸ‘¨β€πŸ« Course Management

  • Create & Manage Courses: Instructors can create, manage, and organize course content
  • Enrollment: Students can discover and join courses with ease
  • Content Delivery: Rich course material with support for various media types

πŸ’¬ Communication Tools

  • Real-time Chat: Instant messaging between students and instructors
  • Discussion Forums: Threaded discussions within courses
  • Chatrooms: Topic-based group chats for collaborative learning
  • Direct Messages: Private communication between users

πŸ“… Planning & Organization

  • Events Calendar: Schedule and track important dates and deadlines
  • Assignments: Create, submit, and grade assignments with automated tracking
  • Progress Tracking: Visual analytics to monitor learning progress

πŸ”” Smart Notifications

  • Real-time Alerts: Stay updated with course announcements
  • Personalized Notifications: Custom alerts based on user preferences
  • Multi-channel Delivery: Receive notifications through the app or email

πŸ‘₯ Community & Social

  • User Profiles: Customizable profiles to showcase achievements
  • Connections: Build a network of peers and instructors
  • Collaboration Tools: Work together on projects and assignments

🎨 Additional Features

  • Dark/Light Theme: Customizable user interface for comfortable viewing
  • Responsive Design: Optimized for both desktop and mobile experiences
  • File Sharing: Seamless exchange of learning materials
  • Search Functionality: Quickly find courses, content, and users

πŸ›  Tech Stack

LearnLink leverages a modern technology stack to deliver a robust, secure, and scalable educational platform:

Frontend

  • React 19: Latest React framework for building the user interface
  • TypeScript: Strongly typed programming language for enhanced development
  • React Router: Navigation and routing in the single-page application
  • Axios: Promise-based HTTP client for API calls
  • Socket.IO Client: Real-time communication
  • Chart.js: Interactive data visualization and progress tracking
  • Material UI & React Icons: Modern UI components and icons
  • Styled Components: Component-level styling

Backend

  • Node.js: JavaScript runtime for building the API server
  • Express.js: Web application framework for handling API requests
  • PostgreSQL: Relational database for data storage
  • Socket.IO: Real-time bidirectional event-based communication
  • JWT: Secure authentication and authorization
  • Multer: Middleware for handling file uploads
  • Nodemailer: Module for sending emails

Development & DevOps

  • ESLint & Prettier: Code quality and formatting tools
  • Nodemon: Automatic server restarts during development
  • Git: Version control system
  • npm/pnpm: Package managers for dependency management

πŸ— Architecture

LearnLink follows a modern client-server architecture separated into two main components:

Frontend (learnlink_gui)

  • Component-Based Structure: Modular components for maximum reusability
  • Context API: State management for authentication, notifications, and themes
  • Custom Hooks: Separation of business logic from UI components
  • TypeScript Interfaces: Strongly-typed data models and API responses
  • Responsive Design: Adapts to different screen sizes and devices

Backend (learnlink_api)

  • RESTful API: Standard API design patterns for client-server communication
  • MVC Pattern: Clear separation of models, controllers, and routes
  • Middleware Pipeline: Authentication, validation, and error handling
  • Socket Service: Real-time communication and notifications
  • Service Layer: Business logic separated from controllers
  • Database Models: PostgreSQL schema with relationships

πŸš€ Getting Started

Follow these instructions to get LearnLink up and running on your local machine.

Prerequisites

  • Node.js (v16 or newer)
  • PostgreSQL (v12 or newer)
  • npm or pnpm package manager

Backend Setup

# Clone the repository
git clone https://github.com/yourusername/learnlink.git
cd learnlink

# Install backend dependencies
cd learnlink_api
npm install

# Configure environment variables
cp .env.example .env
# Edit .env with your database credentials and secrets

# Set up database
npm run db:setup

# Start the development server
npm run dev

Frontend Setup

# In another terminal, navigate to frontend directory
cd ../learnlink_gui

# Install frontend dependencies
npm install

# Start the development server
npm start

The application will be available at http://localhost:3000.


πŸ‘¨β€πŸ’» Development

Project Structure

learnlink/
β”œβ”€β”€ learnlink_api/         # Backend code
β”‚   β”œβ”€β”€ config/            # Configuration files
β”‚   β”œβ”€β”€ controllers/       # API controllers
β”‚   β”œβ”€β”€ middleware/        # Express middlewares
β”‚   β”œβ”€β”€ models/            # Database models
β”‚   β”œβ”€β”€ routes/            # API routes
β”‚   β”œβ”€β”€ services/          # Business logic services
β”‚   β”œβ”€β”€ socket/            # Socket.IO handlers
β”‚   β”œβ”€β”€ uploads/           # Uploaded files storage
β”‚   β”œβ”€β”€ utils/             # Utility functions
β”‚   β”œβ”€β”€ app.js             # Express application setup
β”‚   └── server.js          # Main server entry point
β”œβ”€β”€ learnlink_gui/         # Frontend code
β”‚   β”œβ”€β”€ public/            # Static assets
β”‚   └── src/
β”‚       β”œβ”€β”€ assets/        # Images, fonts, etc.
β”‚       β”œβ”€β”€ components/    # React components
β”‚       β”œβ”€β”€ context/       # React context providers
β”‚       β”œβ”€β”€ hooks/         # Custom React hooks
β”‚       β”œβ”€β”€ pages/         # Application pages
β”‚       β”œβ”€β”€ services/      # API service functions
β”‚       β”œβ”€β”€ styles/        # Global styles
β”‚       β”œβ”€β”€ types/         # TypeScript type definitions
β”‚       └── utils/         # Utility functions
└── README.md              # Project documentation

API Endpoints

LearnLink provides a comprehensive API for all platform features:

  • /api/auth: Authentication endpoints (login, register, reset password)
  • /api/users: User profile management
  • /api/courses: Course creation, enrollment, and management
  • /api/posts: Course posts and content
  • /api/comments: Discussion and comments
  • /api/events: Events and calendar management
  • /api/assignments: Assignment creation and submission
  • /api/chatrooms: Group chat functionality
  • /api/messages: Chat message handling
  • /api/notifications: User notification management

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


LearnLink - Connect, Learn, and Grow Together

About

LearnLink is a comprehensive educational platform that bridges the gap between students and educators, providing a seamless and interactive learning experience.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •