Skip to content

Latest commit

Β 

History

32 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎨 Inscribe

Real-time Collaborative Drawing App

License: MIT Node.js Socket.IO PRs Welcome GitHub stars

Real-time Collaboration Open Source Responsive Design

πŸ“ Table of Contents

✨ Features

🎨 Real-time Collaborative Drawing

  • Multi-user Canvas: Draw simultaneously with others in real-time
  • Rich Toolset:
    • Multiple brush types (pencil, marker, highlighter)
    • Customizable colors and brush sizes
    • Eraser with adjustable size
    • Undo/Redo functionality
    • Clear canvas option
  • Responsive Canvas:
    • Works on all device sizes
    • Smooth zoom and pan functionality
    • Auto-resize on window change

πŸ’¬ Built-in Chat System

  • Real-time messaging
  • User presence indicators (online/offline)
  • Message history with timestamps
  • Typing indicators
  • Emoji support
  • User mentions

🎨 Modern UI/UX

  • Themes:
    • Light and dark mode
    • Custom theme support
    • System preference detection
  • Intuitive Interface:
    • Clean, modern design
    • Keyboard shortcuts for power users
    • Tooltips and helpful hints
    • Responsive layout for all devices

πŸ”’ Security & Performance

  • Security Features:
    • Input sanitization
    • Rate limiting on API endpoints
    • Secure WebSocket connections (WSS)
    • CORS protection
  • Performance Optimizations:
    • Efficient canvas rendering
    • WebSocket connection optimization
    • Lazy loading of assets
    • Client-side caching

πŸ›  Developer Experience

  • Comprehensive API documentation
  • Environment-based configuration
  • Linting and code formatting
  • Detailed logging
  • Error tracking integration
  • Automated testing suite

πŸš€ Quick Start

Get started with Inscribe in under 5 minutes:

  1. Clone the repository

    git clone https://github.com/Keshabkjha/Inscribe.git
    cd Inscribe
  2. Install dependencies

    npm install
  3. Set up environment

    cp .env.example .env
    # Edit .env with your configuration
  4. Start the development server

    npm run dev
  5. Open in browser Visit http://localhost:3000 to start using Inscribe!

πŸ”§ Development

Available Scripts

  • npm start - Start the production server
  • npm run dev - Start the development server with hot-reload
  • npm run prod - Start in production mode
  • npm run lint - Run ESLint
  • npm run lint:fix - Fix linting issues
  • npm run format - Format code with Prettier
  • npm test - Run tests (coming soon)

Project Structure

Inscribe/
β”œβ”€β”€ .github/               # GitHub configuration files
β”‚   β”œβ”€β”€ workflows/         # GitHub Actions workflows
β”‚   └── ISSUE_TEMPLATE/    # Issue templates
β”œβ”€β”€ docs/                  # Documentation files
β”œβ”€β”€ public/                # Static files
β”‚   β”œβ”€β”€ css/               # Stylesheets
β”‚   β”œβ”€β”€ js/                # Client-side JavaScript
β”‚   └── images/            # Image assets
β”œβ”€β”€ .editorconfig          # Editor configuration
β”œβ”€β”€ .env.example           # Example environment variables
β”œβ”€β”€ .eslintrc.json         # ESLint configuration
β”œβ”€β”€ .gitignore            # Git ignore rules
β”œβ”€β”€ CHANGELOG.md          # Version history
β”œβ”€β”€ CODE_OF_CONDUCT.md    # Community guidelines
β”œβ”€β”€ CONTRIBUTING.md      # Contribution guide
β”œβ”€β”€ LICENSE              # MIT License
β”œβ”€β”€ package.json         # Project configuration
β”œβ”€β”€ README.md           # Project documentation
β”œβ”€β”€ ROADMAP.md          # Development roadmap
β”œβ”€β”€ SECURITY.md         # Security policy
└── server.js          # Main application file
Inscribe/
β”œβ”€β”€ public/               # Static files
β”‚   β”œβ”€β”€ index.html        # Main HTML file
β”‚   β”œβ”€β”€ script.js         # Client-side JavaScript
β”‚   └── styles.css        # Main stylesheet
β”œβ”€β”€ server/               # Server-side code
β”‚   β”œβ”€β”€ config/          # Configuration files
β”‚   β”œβ”€β”€ controllers/     # Request handlers
β”‚   β”œβ”€β”€ models/          # Database models
β”‚   β”œβ”€β”€ routes/          # API routes
β”‚   └── utils/           # Utility functions
β”œβ”€β”€ test/                # Test files
β”œβ”€β”€ .env.example         # Example environment variables
β”œβ”€β”€ .eslintrc.json       # ESLint configuration
β”œβ”€β”€ .gitignore           # Git ignore file
β”œβ”€β”€ package.json         # Project dependencies and scripts
└── README.md            # Project documentation

Environment Variables

See .env.example for all available environment variables.

🧰 Tech Stack

  • Frontend:

    • HTML5 Canvas API
    • Vanilla JavaScript (ES6+)
    • CSS3 with Flexbox/Grid
    • Responsive Design
  • Backend:

    • Node.js
    • Express.js
    • Socket.IO
    • MongoDB with Mongoose
  • Dev Tools:

    • ESLint
    • Prettier
    • Nodemon
    • Git

🀝 Contributing

We welcome contributions from the community! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Code Style

  • Follow existing code style and formatting
  • Write meaningful commit messages
  • Update documentation as needed
  • Add tests for new features

Reporting Issues

Found a bug? Please open an issue with:

  • A clear description of the problem
  • Steps to reproduce
  • Expected vs actual behavior
  • Screenshots if applicable

For more details, please check out our Contributing Guide.

πŸ“ License

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

πŸ“§ Contact

Keshab Kumar Jha
Email: keshabkumarjha876@gmail.com
GitHub: @Keshabkjha
LinkedIn: keshabkjha

Project Link: https://github.com/Keshabkjha/Inscribe

🧰 Tech Stack

Backend

Frontend

🌟 Upcoming Features

For a detailed view of our development roadmap, please check out our ROADMAP.md file.

πŸ“Š Project Stats

GitHub stars GitHub forks GitHub issues GitHub pull requests GitHub contributors GitHub last commit GitHub license


πŸ™ Acknowledgments

Special thanks to these amazing projects and communities:

  • Socket.IO - For enabling real-time communication
  • Fabric.js - For the powerful canvas library
  • Shields.io - For the beautiful badges
  • The entire open-source community for their invaluable contributions

Made with ❀️ by Keshab Kumar Jha
  1. Start the development server:

    npm run dev
  2. Open http://localhost:3000 in your browser.

πŸ›  Development

Available Scripts

  • npm start - Start the production server
  • npm run dev - Start the development server with hot-reload
  • npm run prod - Start in production mode
  • npm run lint - Run ESLint
  • npm run lint:fix - Fix linting issues
  • npm run format - Format code with Prettier

Environment Variables

See .env.example for all available environment variables. RATE_LIMIT_WINDOW_MS=900000 RATE_LIMIT_MAX=100

🀝 Contributing

Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Please make sure to update tests as appropriate and follow the Code of Conduct.

πŸ“ License

Distributed under the MIT License. See LICENSE for more information.

πŸ“§ Contact

Keshab Kumar Jha

Project Link: https://github.com/Keshabkjha/Inscribe

πŸ™ Acknowledgments

Special thanks to the following projects and communities:

  • Socket.IO - For enabling real-time communication
  • Express - For the minimalist web framework
  • MongoDB - For the powerful NoSQL database
  • Fabric.js - For the amazing canvas library
  • Render - For the generous hosting
  • Shields.io - For the beautiful badges
  • The entire open-source community for their invaluable contributions

About

A web-based platform enabling multiple users to draw together in real-time with integrated chat. Built with Node.js and Socket.IO, it features synchronized drawing, persistent session history, and secure communication. Perfect for remote collaboration, brainstorming, or creative projects, Inscribe offers a seamless, interactive whiteboard.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

1 watching

Forks

Used by

Contributors

Languages