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 β join.dev2k.org
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
- 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
-
Clone repository:
git clone https://github.com/KosMaster87/Join cd Join -
Install dependencies:
npm install
-
Configure Firebase:
- Copy
config/firebase.config.js.exampletoconfig/firebase.config.js - Add your Firebase credentials to
firebase.config.js
- Copy
-
Start development server:
npm run dev
-
Generate documentation (optional):
npm run docs
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
The application supports two authentication methods:
- Email/Password: Standard Firebase authentication
- 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.
The codebase follows JSDoc standards for inline documentation. Generate HTML documentation with:
npm run docsDocumentation will be generated in the docs/ directory.
Service Layer:
auth.service.js- User authenticationfirestore.service.js- Database operationsdata.service.js- Data transformationuser.service.js- User managementstore.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
This is an educational project. If you find bugs or have suggestions, feel free to open an issue.
ISC License - See package.json for details
Konstantin Aksenov
- GitHub: @KosMaster87
