Skip to content

RoshanCM1998/node-js-jira-clone

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Jira Board Application

A full-stack Jira-like board application built with Node.js backend and Angular frontend.

Project Structure

Node Application Jira/
├── backend/                     # Node.js backend application
│   ├── config/                  # Configuration files
│   ├── database/               # Database setup and migrations
│   │   ├── migrations/         # Database migration files
│   │   └── seeds/              # Database seed files
│   ├── middleware/             # Express middleware
│   ├── routes/                 # API route handlers
│   ├── uploads/                # File upload directory
│   └── server.js               # Main server file
├── frontend/                    # Angular frontend application (placeholder)
├── TEMP/                       # Temporary files for git operations
├── package.json                # Node.js dependencies
└── knexfile.js                 # Database configuration

Features

Backend Features

  • ✅ JWT-based authentication with role-based access control
  • ✅ User management (Admin can add/delete/reset users)
  • ✅ Board management (Create/edit/delete boards)
  • ✅ Column management (Create/edit/delete/reorder columns)
  • ✅ Ticket management (Create/edit/delete/move tickets)
  • ✅ Drag-and-drop ticket movement between columns
  • ✅ Database support for SQLite (development) and PostgreSQL (production)
  • ✅ Comprehensive API validation
  • ✅ Error handling and logging
  • ✅ Security middleware (helmet, CORS, rate limiting)

Planned Frontend Features

  • 🚧 Angular application with Material Design
  • 🚧 Kanban board interface with drag-and-drop
  • 🚧 User authentication and authorization
  • 🚧 Responsive design for mobile and desktop
  • 🚧 Real-time updates (future enhancement)

Quick Start

Backend Setup

  1. Install dependencies:

    npm install
  2. Environment configuration:

    # Copy environment template
    copy backend/config/env.example .env
    # Edit .env file with your configuration
  3. Database setup:

    # Run migrations
    npm run migrate
    
    # Seed database with default admin user
    npm run seed
  4. Start development server:

    npm run dev

The backend will be available at http://localhost:3000

Default Admin User

API Documentation

Authentication Endpoints

  • POST /api/auth/register - Register new user
  • POST /api/auth/login - User login
  • GET /api/auth/profile - Get current user profile
  • PUT /api/auth/profile - Update user profile
  • POST /api/auth/change-password - Change password

User Management (Admin only)

  • GET /api/users - Get all users
  • POST /api/users - Create new user
  • PUT /api/users/:id - Update user
  • DELETE /api/users/:id - Delete user
  • POST /api/users/:id/reset-password - Reset user password

Board Management

  • GET /api/boards - Get all boards
  • GET /api/boards/:id - Get board with columns and tickets
  • POST /api/boards - Create new board
  • PUT /api/boards/:id - Update board
  • DELETE /api/boards/:id - Delete board

Column Management

  • GET /api/columns/board/:boardId - Get columns for board
  • POST /api/columns - Create new column
  • PUT /api/columns/:id - Update column
  • DELETE /api/columns/:id - Delete column
  • POST /api/columns/reorder - Reorder columns

Ticket Management

  • GET /api/tickets/board/:boardId - Get tickets for board
  • GET /api/tickets/:id - Get ticket details
  • POST /api/tickets - Create new ticket
  • PUT /api/tickets/:id - Update ticket
  • POST /api/tickets/:id/move - Move ticket to different column
  • DELETE /api/tickets/:id - Delete ticket

Database Schema

Users Table

  • id (UUID, Primary Key)
  • email (String, Unique)
  • password (String, Hashed)
  • first_name (String)
  • last_name (String)
  • role (Enum: admin, user)
  • is_active (Boolean)

Boards Table

  • id (UUID, Primary Key)
  • name (String)
  • description (Text)
  • created_by (Foreign Key to Users)

Columns Table

  • id (UUID, Primary Key)
  • name (String)
  • board_id (Foreign Key to Boards)
  • position (Integer)
  • color (String)

Tickets Table

  • id (UUID, Primary Key)
  • title (String)
  • description (Text)
  • board_id (Foreign Key to Boards)
  • column_id (Foreign Key to Columns)
  • assigned_to (Foreign Key to Users)
  • created_by (Foreign Key to Users)
  • priority (Enum: low, medium, high, urgent)
  • ticket_type (Enum: task, bug, feature, improvement)
  • position (Integer)

Development Scripts

npm run dev          # Start development server with nodemon
npm run start        # Start production server
npm run migrate      # Run database migrations
npm run seed         # Seed database with default data
npm run test         # Run tests
npm run lint         # Run ESLint

Security Features

  • JWT token-based authentication
  • Password hashing with bcrypt
  • Input validation with Joi
  • Rate limiting
  • CORS configuration
  • Helmet security headers
  • SQL injection prevention with parameterized queries

Future Enhancements

  • Real-time updates with WebSockets
  • File attachments for tickets
  • Email notifications
  • Advanced search and filtering
  • Time tracking
  • Reporting and analytics
  • Mobile app support

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests for new functionality
  5. Submit a pull request

License

This project is licensed under the MIT License.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published