A Kanban-style productivity tool with contact management, drag & drop tasks, and a responsive multi-page architecture. Built with vanilla JavaScript and Firebase Firestore.
| Environment | URL |
|---|---|
| Prod | join.dev2ksoftware.com |
| Staging | join-staging.dev2ksoftware.com |
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
- 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)
- 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
git clone https://github.com/KosMaster87/Join.git
cd Join
pnpm installCopy the Firebase config template and add your credentials:
cp config/firebase.config.js.example config/firebase.config.jspnpm run dev
# → opens http://localhost:3000pnpm run docs # generate JSDoc into docs/join/
├── assets/
│ ├── fonts/ # Inter font variants
│ ├── img/ # SVG icons & UI elements
│ └── templates/ # Reusable HTML partials (header, menu)
│
├── config/
│ ├── firebase.config.js # Firebase credentials (gitignored)
│ └── firebase.config.js.example # Config template
│
├── css/ # One stylesheet per page/module
│
├── js/
│ ├── app.js # Main application logic
│ ├── add-task/ # Task creation module (+ core/)
│ ├── board/ # Kanban board module (+ core/)
│ ├── contact/ # Contact management module (+ core/)
│ └── shared/ # Shared utilities
│
├── pages/ # HTML views (board, contacts, summary, legal, ...)
│
├── services/ # Service layer
│ ├── auth.service.js # Authentication
│ ├── firestore.service.js # Database operations
│ ├── data.service.js # Data transformation
│ ├── user.service.js # User management
│ └── store.js # Global state
│
├── index.html # Entry point (login page)
├── style.css # Global styles
├── package.json
├── jsdoc.json
└── README.md
Two methods are supported: standard Firebase email/password, and a pre-configured guest login for immediate access to the shared workspace.
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 (
board/,contact/,add-task/) - Core functionality separated into
core/subdirectories - Shared utilities in
shared/ - Max 400 lines of code per file
ISC License - see package.json for details.
Konstantin Aksenov
