Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

KosMaster87/Join

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

14 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“‹ Join - Collaborative Task Management

A Kanban-style productivity tool with contact management, drag & drop tasks, and responsive multi-page architecture. Built with vanilla JavaScript and Firebase Firestore following clean code principles.


🌐 Live Demo

πŸ”— Live Demo – join.dev2k.org


πŸ–₯️ Preview

Join Screenshot


✨ Key Features

Core Functionality:

  • πŸ“‹ Kanban board with 4 status columns (ToDo, In Progress, Await Feedback, Done)
  • πŸ‘₯ Shared workspace with Firebase authentication (email/password + guest login)
  • πŸ“± Full responsive design (320px+ mobile-first support)
  • πŸ” Real-time task search and filtering
  • πŸ“… Dashboard with task statistics and summaries
  • 🎯 Drag & drop task management (desktop + mobile touch support)
  • πŸ“ Advanced form validation with instant feedback
  • πŸ‘€ Contact management with full CRUD operations
  • πŸ“œ Legal notice & privacy policy pages
  • πŸ” User authentication with Firebase Auth
  • ☁️ Cloud data persistence with Firestore

Technical Highlights:

  • 🧩 Multi-Page Application (MPA) architecture
  • πŸ“‚ Modular file structure with core/ subdirectories
  • ✨ Clean code principles (JSDoc documentation, max 400 LOC/file)
  • πŸ”₯ Firebase integration (Auth + Firestore)
  • πŸ“± Mobile-first responsive approach
  • πŸ“¦ Service-based architecture for data management

πŸ› οΈ Tech Stack

  • Frontend: Vanilla JavaScript (ES6+), HTML5, CSS3
  • Backend: Firebase Firestore (NoSQL database)
  • Authentication: Firebase Authentication
  • Architecture: Multi-Page Application (MPA) with modular design
  • Documentation: JSDoc for code documentation
  • Development: live-server for local development
  • Version Control: Git with comprehensive .gitignore

πŸš€ Installation & Setup

  1. Clone repository:

    git clone https://github.com/KosMaster87/Join
    cd Join
  2. Install dependencies:

    npm install
  3. Configure Firebase:

    • Copy config/firebase.config.js.example to config/firebase.config.js
    • Add your Firebase credentials to firebase.config.js
  4. Start development server:

    npm run dev
  5. Generate documentation (optional):

    npm run docs

πŸ“ Folder Structure

join/
β”œβ”€β”€ assets/
β”‚   β”œβ”€β”€ fonts/                               # Inter font variants
β”‚   β”œβ”€β”€ img/                                 # SVG icons & UI elements
β”‚   β”‚   β”œβ”€β”€ add_task/                        # Task creation icons
β”‚   β”‚   β”œβ”€β”€ addContact/                      # Contact form icons
β”‚   β”‚   β”œβ”€β”€ board/                           # Kanban board icons
β”‚   β”‚   β”œβ”€β”€ contact/                         # Contact list icons
β”‚   β”‚   β”œβ”€β”€ header/                          # Header/navigation icons
β”‚   β”‚   β”œβ”€β”€ login/                           # Authentication icons
β”‚   β”‚   β”œβ”€β”€ menu/                            # Menu icons
β”‚   β”‚   β”œβ”€β”€ register/                        # Registration icons
β”‚   β”‚   β”œβ”€β”€ summary/                         # Dashboard icons
β”‚   β”‚   └── other/                           # Misc icons
β”‚   └── templates/                           # Reusable HTML partials
β”‚       β”œβ”€β”€ header.html                      # Global header
β”‚       β”œβ”€β”€ menu.html                        # Logged-in menu
β”‚       └── menuOffline.html                 # Offline/guest menu
β”‚
β”œβ”€β”€ config/
β”‚   β”œβ”€β”€ firebase.config.js                   # Firebase credentials (gitignored)
β”‚   └── firebase.config.js.example           # Config template
β”‚
β”œβ”€β”€ css/
β”‚   β”œβ”€β”€ addTask.css                          # Task creation styles
β”‚   β”œβ”€β”€ board.css                            # Kanban board styles
β”‚   β”œβ”€β”€ fonts.css                            # Font definitions
β”‚   β”œβ”€β”€ header.css                           # Header styles
β”‚   β”œβ”€β”€ help.css                             # Help page styles
β”‚   β”œβ”€β”€ legality.css                         # Legal notice styles
β”‚   β”œβ”€β”€ login.css                            # Login page styles
β”‚   β”œβ”€β”€ menu.css                             # Navigation menu styles
β”‚   β”œβ”€β”€ policy.css                           # Privacy policy styles
β”‚   β”œβ”€β”€ register.css                         # Registration styles
β”‚   β”œβ”€β”€ summary.css                          # Dashboard styles
β”‚   └── contact/                             # Contact module styles
β”‚       β”œβ”€β”€ addContact.css
β”‚       β”œβ”€β”€ editContact.css
β”‚       β”œβ”€β”€ listContact.css
β”‚       β”œβ”€β”€ mobileBtn.css
β”‚       └── showSingleContact.css
β”‚
β”œβ”€β”€ js/
β”‚   β”œβ”€β”€ app.js                               # Main application logic
β”‚   β”œβ”€β”€ backup.js                            # Backup functionality
β”‚   β”œβ”€β”€ header.js                            # Header interactions
β”‚   β”œβ”€β”€ help.js                              # Help page logic
β”‚   β”œβ”€β”€ includeHTML.js                       # Template loading
β”‚   β”œβ”€β”€ legality.js                          # Legal notice logic
β”‚   β”œβ”€β”€ login.js                             # Login functionality
β”‚   β”œβ”€β”€ menu.js                              # Menu interactions
β”‚   β”œβ”€β”€ policy.js                            # Privacy policy logic
β”‚   β”œβ”€β”€ register.js                          # Registration logic
β”‚   β”œβ”€β”€ summary.js                           # Dashboard logic
β”‚   β”‚
β”‚   β”œβ”€β”€ add-task/                            # Task creation module
β”‚   β”‚   β”œβ”€β”€ addTask.js                       # Main task creation
β”‚   β”‚   β”œβ”€β”€ addTaskHTML.js                   # HTML generation
β”‚   β”‚   └── core/                            # Core task functionality
β”‚   β”‚       β”œβ”€β”€ add-task-category.js
β”‚   β”‚       β”œβ”€β”€ add-task-contacts.js
β”‚   β”‚       β”œβ”€β”€ add-task-form-state.js
β”‚   β”‚       β”œβ”€β”€ add-task-input-clearing.js
β”‚   β”‚       β”œβ”€β”€ add-task-listeners.js
β”‚   β”‚       β”œβ”€β”€ add-task-operations.js
β”‚   β”‚       β”œβ”€β”€ add-task-priority.js
β”‚   β”‚       β”œβ”€β”€ add-task-subtasks.js
β”‚   β”‚       β”œβ”€β”€ add-task-ui.js
β”‚   β”‚       └── add-task-validation.js
β”‚   β”‚
β”‚   β”œβ”€β”€ board/                               # Kanban board module
β”‚   β”‚   β”œβ”€β”€ boardDragSearch.js               # Drag & drop + search
β”‚   β”‚   β”œβ”€β”€ boardEdit.js                     # Task editing
β”‚   β”‚   β”œβ”€β”€ boardEditHTML.js                 # Edit form HTML
β”‚   β”‚   β”œβ”€β”€ boardFill.js                     # Board population
β”‚   β”‚   β”œβ”€β”€ boardHTML.js                     # Board HTML generation
β”‚   β”‚   └── core/                            # Core board functionality
β”‚   β”‚       β”œβ”€β”€ board-contact-management.js
β”‚   β”‚       β”œβ”€β”€ board-contact-navigation.js
β”‚   β”‚       β”œβ”€β”€ board-helpers.js
β”‚   β”‚       β”œβ”€β”€ board-init.js
β”‚   β”‚       β”œβ”€β”€ board-priority.js
β”‚   β”‚       β”œβ”€β”€ board-subtasks.js
β”‚   β”‚       β”œβ”€β”€ board-task-operations.js
β”‚   β”‚       β”œβ”€β”€ board-task-render.js
β”‚   β”‚       └── board-ui-helpers.js
β”‚   β”‚
β”‚   β”œβ”€β”€ contact/                             # Contact management module
β”‚   β”‚   β”œβ”€β”€ addContact.js                    # Create contact
β”‚   β”‚   β”œβ”€β”€ editContact.js                   # Update contact
β”‚   β”‚   β”œβ”€β”€ listContact.js                   # List view
β”‚   β”‚   β”œβ”€β”€ mainContact.js                   # Main contact logic
β”‚   β”‚   β”œβ”€β”€ showSingleContact.js             # Detail view
β”‚   β”‚   └── core/                            # Core contact functionality
β”‚   β”‚       β”œβ”€β”€ contact-helpers.js
β”‚   β”‚       β”œβ”€β”€ contact-navigation.js
β”‚   β”‚       β”œβ”€β”€ contact-operations.js
β”‚   β”‚       β”œβ”€β”€ contact-ui.js
β”‚   β”‚       └── contact-validation.js
β”‚   β”‚
β”‚   └── shared/                              # Shared utilities
β”‚       β”œβ”€β”€ backend.js                       # Backend communication
β”‚       β”œβ”€β”€ signature-helpers.js             # User signature helpers
β”‚       β”œβ”€β”€ task-helpers.js                  # Task utility functions
β”‚       └── ui-helpers.js                    # UI utility functions
β”‚
β”œβ”€β”€ pages/                                   # HTML views
β”‚   β”œβ”€β”€ addTask.html                         # Task creation page
β”‚   β”œβ”€β”€ board.html                           # Kanban board page
β”‚   β”œβ”€β”€ contacts.html                        # Contact management page
β”‚   β”œβ”€β”€ help.html                            # Help page
β”‚   β”œβ”€β”€ legality.html                        # Legal notice (logged in)
β”‚   β”œβ”€β”€ legalityLogin.html                   # Legal notice (public)
β”‚   β”œβ”€β”€ policy.html                          # Privacy policy (logged in)
β”‚   β”œβ”€β”€ policyLogin.html                     # Privacy policy (public)
β”‚   └── summary.html                         # Dashboard/summary page
β”‚
β”œβ”€β”€ services/                                # Service layer
β”‚   β”œβ”€β”€ auth.service.js                      # Authentication service
β”‚   β”œβ”€β”€ data.service.js                      # Data management
β”‚   β”œβ”€β”€ firestore.service.js                 # Firestore operations
β”‚   β”œβ”€β”€ store.js                             # Global state management
β”‚   └── user.service.js                      # User operations
β”‚
β”œβ”€β”€ index.html                               # Entry point (login page)
β”œβ”€β”€ style.css                                # Global styles
β”œβ”€β”€ package.json                             # NPM configuration
β”œβ”€β”€ jsdoc.json                               # JSDoc configuration
└── README.md                                # This file

πŸ”‘ Authentication

The application supports two authentication methods:

  1. Email/Password: Standard Firebase authentication
  2. Guest Login: Quick access with pre-configured guest account

Users can register new accounts or use the guest login for immediate access to the shared workspace.


πŸ“š Documentation

The codebase follows JSDoc standards for inline documentation. Generate HTML documentation with:

npm run docs

Documentation will be generated in the docs/ directory.


πŸ—οΈ Architecture

Service Layer:

  • auth.service.js - User authentication
  • firestore.service.js - Database operations
  • data.service.js - Data transformation
  • user.service.js - User management
  • store.js - Global state

Modular Design:

  • Each feature has its own directory (e.g., board/, contact/, add-task/)
  • Core functionality separated into core/ subdirectories
  • Shared utilities in shared/ directory
  • Max 400 lines of code per file for maintainability

🀝 Contributing

This is an educational project. If you find bugs or have suggestions, feel free to open an issue.


πŸ“„ License

ISC License - See package.json for details


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

Konstantin Aksenov


About

Join: Collaborative Kanban task management with guest access and responsive design.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors