Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
129 commits
Select commit Hold shift + click to select a range
e21f3a7
Add localStorage functionality for persistent colors and drag-and-dro…
KelseyProgrammer Mar 13, 2025
94eeac6
Add local storage functionality to Kanban board
KelseyProgrammer Mar 13, 2025
7ab7848
Fix delete project functionality and column styling
KelseyProgrammer Mar 13, 2025
faf4433
Fix project edit functionality to only update basic details without a…
KelseyProgrammer Mar 14, 2025
4b068e8
Merge pull request #54 from jamesAllenJahner3rd/feature/fix-delete-an…
jamesAllenJahner3rd Mar 14, 2025
6899ccc
Resolved merge conflicts
KelseyProgrammer Mar 16, 2025
fee669e
Merge pull request #57 from jamesAllenJahner3rd/feature/edit-project-…
jamesAllenJahner3rd Mar 21, 2025
24416f3
Update site styling and layout:
KelseyProgrammer Mar 27, 2025
b9726d3
Update profile page layout and restore index styling. Fix edit button…
KelseyProgrammer Mar 27, 2025
5c66231
Update profile page layout: align create project form left and projec…
KelseyProgrammer Mar 27, 2025
59bb8bb
Add .lh and .history directories to .gitignore
KelseyProgrammer Mar 28, 2025
0c205b9
Remove .history and .lh directories from Git tracking
KelseyProgrammer Mar 28, 2025
6641375
Merge pull request #58 from jamesAllenJahner3rd/updating-index-and-na…
jamesAllenJahner3rd Mar 28, 2025
44f40e1
Update landing page spacing: adjust logo and title positioning closer…
KelseyProgrammer Mar 29, 2025
1abbc04
Revert "Update landing page spacing: adjust logo and title positionin…
KelseyProgrammer Mar 29, 2025
0d64f60
Update landing page layout: adjust logo container and hero title posi…
KelseyProgrammer Mar 29, 2025
29585f3
Merge pull request #99 from jamesAllenJahner3rd/updating-index-and-na…
KelseyProgrammer Mar 31, 2025
56efb2b
changed logo color, nav bar, and minor design updates
KelseyProgrammer Mar 31, 2025
6ee7a2a
Merge pull request #109 from jamesAllenJahner3rd/updating-index-and-n…
jamesAllenJahner3rd Mar 31, 2025
58bd354
Add techmeeting image and update index page
KelseyProgrammer Apr 1, 2025
8a10745
Update login page: add professional styling and layout
KelseyProgrammer Apr 2, 2025
15f78b8
project Controller - I added GetKanban; ProjectRoutes - i added Kanba…
jamesAllenJahner3rd Apr 3, 2025
da1e728
Merge pull request #112 from jamesAllenJahner3rd/loginpageedit
jamesAllenJahner3rd Apr 3, 2025
d2606d4
Merge pull request #113 from jamesAllenJahner3rd/project-landing-page
KelseyProgrammer Apr 3, 2025
792f88c
css for chat room
jamesAllenJahner3rd Apr 4, 2025
4671cef
more css for the chat
jamesAllenJahner3rd Apr 4, 2025
0258065
initial chat function works. next socket.io
jamesAllenJahner3rd Apr 5, 2025
14ffb34
connect to the websocket
jamesAllenJahner3rd Apr 5, 2025
496cf7a
socket sends and recieves
jamesAllenJahner3rd Apr 6, 2025
d819ecc
comments out many console.logs
jamesAllenJahner3rd Apr 6, 2025
772eab0
feat: add reveal on scroll animation to index page
KelseyProgrammer Apr 6, 2025
9475c4f
chat's working again. the kaban local is working again. the rest is b…
jamesAllenJahner3rd Apr 7, 2025
56ee4d4
Merge pull request #114 from jamesAllenJahner3rd/parallax-effect
jamesAllenJahner3rd Apr 8, 2025
8a9d8f4
trouble sthooting
jamesAllenJahner3rd Apr 8, 2025
dd3baa8
added project tittle to the kanban template
jamesAllenJahner3rd Apr 8, 2025
3134a8f
feat: Implement local authentication with bcrypt and signup
KelseyProgrammer Apr 9, 2025
3abb8c6
fixed a boo boo
KelseyProgrammer Apr 9, 2025
14f0bf5
Loads from server now.
jamesAllenJahner3rd Apr 9, 2025
fdcc57c
Documents now load from the server too
jamesAllenJahner3rd Apr 9, 2025
5483745
Merge changes from main branch
KelseyProgrammer Apr 9, 2025
cdc6f56
fixed Profile schema, improved signup controller, added email regex f…
KelseyProgrammer Apr 9, 2025
2e8ac63
socket.broadcast change
jamesAllenJahner3rd Apr 9, 2025
c49081d
Fix: Patch connect-flash module to replace deprecated util.isArray wi…
KelseyProgrammer Apr 9, 2025
684ef71
connect-flash added
jamesAllenJahner3rd Apr 9, 2025
f20f16f
updated modules
jamesAllenJahner3rd Apr 9, 2025
5c44eae
fixed the column duplication bug
jamesAllenJahner3rd Apr 9, 2025
70e62da
corrected the mismatch of column data from init load and the socket.i…
jamesAllenJahner3rd Apr 10, 2025
bbea478
Merge pull request #116 from jamesAllenJahner3rd/set-up-socket.io
KelseyProgrammer Apr 10, 2025
1335d86
Resolve merge conflicts: Combine socket.io functionality with flash m…
KelseyProgrammer Apr 10, 2025
11066dc
Merge branch 'main' into bcrypt
jamesAllenJahner3rd Apr 10, 2025
399ac1a
Merge pull request #115 from jamesAllenJahner3rd/bcrypt
jamesAllenJahner3rd Apr 11, 2025
8187155
Revert "corrected the mismatch of column data from init load and the …
jamesAllenJahner3rd Apr 11, 2025
8a646f0
sorted. removed -${projectId}, b/c it wasn't needed ; i added the bo…
jamesAllenJahner3rd Apr 11, 2025
f88a420
cleaned up the mess.
jamesAllenJahner3rd Apr 11, 2025
b39e247
ADDING A MODAL TO FIND AND ADD USERS
jamesAllenJahner3rd Apr 12, 2025
6206074
added a modal to add users to the the project page
jamesAllenJahner3rd Apr 14, 2025
badeefb
Merge pull request #118 from jamesAllenJahner3rd/add-users
KelseyProgrammer Apr 15, 2025
c33b429
Update package.json dependencies
KelseyProgrammer Apr 15, 2025
27914b6
Resolve merge conflicts in package.json, server.js, and passport.js
KelseyProgrammer Apr 15, 2025
e73a1ae
fix package.json error.
jamesAllenJahner3rd Apr 15, 2025
05e690c
Restore createDocument functionality and stylize modal form
KelseyProgrammer Apr 15, 2025
8c1b058
setup a reusable modal structure.
jamesAllenJahner3rd Apr 16, 2025
ae1e631
updated adduserModal to use modal.js
jamesAllenJahner3rd Apr 16, 2025
39b5f3c
started setting up the notifications.
jamesAllenJahner3rd Apr 16, 2025
f88272f
Update kanban board template and partials for improved UI and functio…
KelseyProgrammer Apr 16, 2025
e9f5216
Merge pull request #119 from jamesAllenJahner3rd/createDocumentForm
jamesAllenJahner3rd Apr 17, 2025
970cc6b
handleDocumentSubmit and handleColumnSubmit were named as such
jamesAllenJahner3rd Apr 17, 2025
8a8ca82
Merge branch 'main' into set-up-socket.io
jamesAllenJahner3rd Apr 17, 2025
220faa7
fixed the hnadle functions again
jamesAllenJahner3rd Apr 17, 2025
1890584
Merge pull request #120 from jamesAllenJahner3rd/set-up-socket.io
KelseyProgrammer Apr 17, 2025
4146c8b
added the notification window. it detects notifications. formated doc…
jamesAllenJahner3rd Apr 18, 2025
0867b23
Merge branch 'main' into modalRefactor
jamesAllenJahner3rd Apr 18, 2025
06d0b42
one big mess!
jamesAllenJahner3rd Apr 21, 2025
0039902
used socket.io to get the projectname
jamesAllenJahner3rd Apr 21, 2025
e27660d
corrected some url's, chat now exports currentProject
jamesAllenJahner3rd Apr 21, 2025
d459e18
updating
jamesAllenJahner3rd Apr 21, 2025
3c79b8d
Notifications can be added!
jamesAllenJahner3rd Apr 22, 2025
bb18967
fixed the addusermodal close x
jamesAllenJahner3rd Apr 22, 2025
e889ba5
projectController fixed the newproject.name; addusermodel modal now c…
jamesAllenJahner3rd Apr 23, 2025
4797ff8
Merge pull request #121 from jamesAllenJahner3rd/modalRefactor
KelseyProgrammer Apr 23, 2025
d547e98
Merge branch 'main' into make-notifications
jamesAllenJahner3rd Apr 23, 2025
4825d68
Notifications now add users on aproval.
jamesAllenJahner3rd Apr 23, 2025
cf394e0
Merge branch 'main' into notifications-to-Adduser
jamesAllenJahner3rd Apr 23, 2025
aa079dd
Merge pull request #123 from jamesAllenJahner3rd/notifications-to-Add…
KelseyProgrammer Apr 23, 2025
e9fc3b0
Merge branch 'main' into make-notifications
jamesAllenJahner3rd Apr 23, 2025
a78bd4f
filters out old notifications
jamesAllenJahner3rd Apr 23, 2025
aff14f6
Merge pull request #122 from jamesAllenJahner3rd/make-notifications
KelseyProgrammer Apr 23, 2025
935d7ee
Implement document drag-and-drop between columns and fix addUserModal…
KelseyProgrammer Apr 24, 2025
a54bc1d
Update .gitignore to exclude all Cursor IDE specific files
KelseyProgrammer Apr 24, 2025
7f93d7d
Merge pull request #124 from jamesAllenJahner3rd/createDocumentForm
jamesAllenJahner3rd Apr 25, 2025
98fae36
fix: improve modal functionality and styling - Fix edit project modal…
KelseyProgrammer Apr 25, 2025
20ee8c6
notifications dynamically update.
jamesAllenJahner3rd Apr 26, 2025
11a6960
Merge pull request #125 from jamesAllenJahner3rd/bugfixes
jamesAllenJahner3rd Apr 26, 2025
1de12b1
Merge branch 'main' into finish-notifications
jamesAllenJahner3rd Apr 26, 2025
4c84c16
Merge branch 'finish-notifications' into add-username-to-chat
jamesAllenJahner3rd Apr 26, 2025
04dd5d1
fix a //
jamesAllenJahner3rd Apr 26, 2025
d317b2d
fixed a //
jamesAllenJahner3rd Apr 26, 2025
053047c
moved a addUser variable to correct a bug.
jamesAllenJahner3rd Apr 26, 2025
609effb
Merge branch 'finish-notifications' into add-username-to-chat
jamesAllenJahner3rd Apr 26, 2025
585d246
Update projectController.js
jamesAllenJahner3rd Apr 26, 2025
ff34e53
Update profile.js
jamesAllenJahner3rd Apr 26, 2025
72b3006
commented out a log
jamesAllenJahner3rd Apr 27, 2025
c362f6c
added user name to chat message
jamesAllenJahner3rd Apr 27, 2025
b63f05a
Merge pull request #126 from jamesAllenJahner3rd/finish-notifications
KelseyProgrammer Apr 27, 2025
96eb03b
Merge branch 'main' into add-username-to-chat
jamesAllenJahner3rd Apr 27, 2025
74944c8
Merge pull request #128 from jamesAllenJahner3rd/add-username-to-chat
KelseyProgrammer Apr 27, 2025
a7ada98
Add click-to-progress functionality to Kanban documents and fix icon …
KelseyProgrammer Apr 29, 2025
83a7dd5
Implement real-time notifications and user management with Socket.IO
jamesAllenJahner3rd Apr 30, 2025
286a184
Refactor profileController and modal.js for improved logging and erro…
jamesAllenJahner3rd May 1, 2025
f7d32f7
Merge branch 'main' into socket-notifications
jamesAllenJahner3rd May 1, 2025
3dbb24e
Merge pull request #130 from jamesAllenJahner3rd/kanbanOrganization
jamesAllenJahner3rd May 1, 2025
5e6e26d
Merge branch 'main' into socket-notifications
jamesAllenJahner3rd May 1, 2025
ecd6e5b
Merge pull request #131 from jamesAllenJahner3rd/socket-notifications
KelseyProgrammer May 2, 2025
59386c1
Refactor Kanban functionality into separate module (kanban.js) for im…
jamesAllenJahner3rd May 3, 2025
0f6c233
Add Kanban data retrieval and enhance error messages in projectContro…
jamesAllenJahner3rd May 4, 2025
8b51687
Merge branch 'main' into more-column-statuses
jamesAllenJahner3rd May 4, 2025
7799f4d
Enhance logging throughout kanban.js for improved debugging; update s…
jamesAllenJahner3rd May 5, 2025
eae0928
Refactor projectController to improve user profile retrieval and acce…
jamesAllenJahner3rd May 6, 2025
79d1d47
Refactor projectController to separate access level determination int…
jamesAllenJahner3rd May 7, 2025
44b31bf
Merge branch 'main' into userVSadmin-interface
jamesAllenJahner3rd May 7, 2025
8913908
Merge pull request #132 from jamesAllenJahner3rd/more-column-statuses
KelseyProgrammer May 7, 2025
6bdafc9
Merge branch 'main' into userVSadmin-interface
KelseyProgrammer May 7, 2025
ec715da
Merge pull request #133 from jamesAllenJahner3rd/userVSadmin-interface
KelseyProgrammer May 7, 2025
acfc61c
fix: update Socket.IO client connections to use port 8000 consistently
KelseyProgrammer May 7, 2025
da87b56
refactor: separate kanban board code into distinct files - Split code…
KelseyProgrammer May 9, 2025
b92c785
refactor: separate burnup chart code into distinct files
KelseyProgrammer May 10, 2025
de527e4
feat: improve document progress tracking - Add proper status validati…
KelseyProgrammer May 10, 2025
e7acf1d
docs: update README with team information and project status - Add Ch…
KelseyProgrammer Jun 16, 2025
80e52ba
merge: resolve conflicts and integrate latest changes
KelseyProgrammer Jun 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -53,3 +53,12 @@ ehthumbs_vista.db
*.tmp
*.bak
*.swp

# history files
.history
.localhistory/
.lh/

# Cursor IDE specific files
.cursorrules
.cursor/
255 changes: 244 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,248 @@
# project_manager
A project manager for software engineers
# Project Manager - Real-Time Collaborative Kanban Board

## Dependencies
A full-stack project management application featuring real-time collaborative Kanban boards, user authentication, and comprehensive project tracking capabilities.

- [nodemon](https://www.npmjs.com/package/nodemon)
- [dotenv](https://www.npmjs.com/package/dotenv)
- [ejs](https://www.npmjs.com/package/ejs)
- [express](https://www.npmjs.com/package/express)
- [method-override](https://www.npmjs.com/package/method-override)
![Project Status](https://img.shields.io/badge/Status-Development%20in%20Progress-orange)
![Node.js](https://img.shields.io/badge/Node.js-18+-green)
![MongoDB](https://img.shields.io/badge/MongoDB-5.0+-blue)
![Socket.IO](https://img.shields.io/badge/Socket.IO-4.8+-orange)

## Installation
> **Note**: This project is currently in active development. Demo deployment coming soon!

- do installation by running `npm install` inside of your terminal
- do `npm run dev` and go to `localhost:8000` on your browser
## 🚀 Features

### Core Functionality
- **Real-Time Kanban Boards**: Drag-and-drop interface with live updates across all connected users
- **Multi-User Collaboration**: Real-time synchronization using Socket.IO
- **Project Management**: Create, edit, and track multiple projects
- **Document Management**: Add, edit, and organize documents within projects
- **User Authentication**: Local and Google OAuth authentication
- **Role-Based Access**: Admin and regular user permissions
- **Real-Time Chat**: In-project communication system

### Advanced Features
- **Progress Tracking**: Visual progress indicators with automatic status updates
- **Burn-up Charts**: Project progress visualization
- **Document Status Management**: Four-stage workflow (To Do → In Progress → Testing → Done)
- **Color Customization**: Customizable document and column colors
- **Responsive Design**: Mobile-friendly interface
- **Real-Time Notifications**: Live updates for all project activities

### Technical Highlights
- **Real-Time Updates**: Instant synchronization across all connected clients
- **Drag-and-Drop**: Smooth document and column reordering
- **Auto-Save**: Automatic state persistence to database and localStorage
- **Error Handling**: Comprehensive error handling and user feedback
- **Security**: CSRF protection, input validation, and secure session management

## 🛠️ Technology Stack

### Backend
- **Node.js** - Runtime environment
- **Express.js** - Web application framework
- **MongoDB** - NoSQL database
- **Mongoose** - MongoDB object modeling
- **Socket.IO** - Real-time bidirectional communication
- **Passport.js** - Authentication middleware
- **bcrypt** - Password hashing
- **Express Session** - Session management

### Frontend
- **EJS** - Template engine
- **Dragula** - Drag and drop library
- **Socket.IO Client** - Real-time client communication
- **Chart.js** - Data visualization
- **CSS3** - Styling and animations

### Development Tools
- **Nodemon** - Development server with auto-reload
- **Morgan** - HTTP request logger
- **Dotenv** - Environment variable management

## 📁 Project Structure

```
project_manager/
├── config/ # Configuration files
├── controllers/ # Business logic
├── middleware/ # Custom middleware
├── models/ # Database schemas
│ ├── Project.js # Project model
│ ├── Document.js # Document model
│ ├── Kanban.js # Kanban board model
│ ├── Profile.js # User profile model
│ └── Chat.js # Chat model
├── public/ # Static assets
│ ├── css/ # Stylesheets
│ ├── js/ # Client-side JavaScript
│ └── images/ # Image assets
├── routes/ # API routes
├── views/ # EJS templates
│ └── partials/ # Reusable template components
├── server.js # Main application entry point
└── package.json # Dependencies and scripts
```

## 🚀 Getting Started

### Prerequisites
- Node.js (v18 or higher)
- MongoDB (v5.0 or higher)
- npm or yarn

### Installation

1. **Clone the repository**
```bash
git clone https://github.com/yourusername/project_manager.git
cd project_manager
```

2. **Install dependencies**
```bash
npm install
```

3. **Environment Setup**
Create a `.env` file in the `config/` directory:
```env
NODE_ENV=development
PORT=8000
DB_STRING=mongodb://localhost:27017/project_manager
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
SESSION_SECRET=your_session_secret
```

4. **Start the application**
```bash
# Development mode
npm run dev

# Production mode
npm start
```

5. **Access the application**
Open your browser and navigate to `http://localhost:8000`

## 🔧 Configuration

### Database Setup
The application uses MongoDB with Mongoose ODM. Ensure MongoDB is running and the connection string is properly configured in your environment variables.

### Authentication Setup
1. Create a Google OAuth application in the Google Cloud Console
2. Add your client ID and secret to the environment variables
3. Configure the authorized redirect URIs

### Socket.IO Configuration
Real-time features are automatically configured. The application handles:
- Room-based communication
- User presence tracking
- Real-time board updates
- Chat functionality

## 📊 Key Features in Detail

### Real-Time Kanban Board
- **Drag-and-Drop**: Move documents between columns with smooth animations
- **Auto-Save**: Changes are automatically saved to both localStorage and database
- **Live Updates**: All connected users see changes instantly
- **Status Tracking**: Documents progress through four stages automatically

### Document Management
- **Rich Editing**: Double-click to edit titles and descriptions
- **Color Customization**: Change document and column colors
- **Progress Tracking**: Visual indicators show document status
- **Bulk Operations**: Delete multiple documents with confirmation

### User Management
- **Authentication**: Local and Google OAuth login
- **Profile Management**: User profiles with project associations
- **Role Management**: Admin and regular user permissions
- **Team Collaboration**: Invite users to projects

## 🔒 Security Features

- **Password Hashing**: bcrypt for secure password storage
- **Session Management**: Secure session handling with MongoDB store
- **Input Validation**: Server-side validation for all inputs
- **CSRF Protection**: Cross-site request forgery protection
- **XSS Prevention**: Input sanitization and output encoding

## 🧪 Testing

```bash
# Run tests (when implemented)
npm test

# Run with coverage
npm run test:coverage
```

## 📈 Performance Optimizations

- **Database Indexing**: Optimized queries with proper indexing
- **Caching**: Local storage for offline functionality
- **Lazy Loading**: Efficient resource loading
- **Compression**: Gzip compression for static assets
- **CDN Ready**: Static assets optimized for CDN deployment

## 🚀 Deployment

### Heroku Deployment
1. Create a Heroku app
2. Set environment variables
3. Deploy using Git:
```bash
git push heroku main
```

### Docker Deployment
```bash
# Build the image
docker build -t project-manager .

# Run the container
docker run -p 8000:8000 project-manager
```

## 🤝 Contributing

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

## 📝 License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## 👥 Team

- **Lead Developer**: Christopher Ament
- **Lead Developer**: James Jahner
- **Full-Stack Development**: Christopher Ament & James Jahner

## 📞 Support

For support and questions:
- Create an issue in the GitHub repository
- Contact: christopher.ament@example.com
- Documentation: [Coming Soon]

## 🔮 Roadmap

- [ ] Live demo deployment
- [ ] Mobile application
- [ ] Advanced analytics dashboard
- [ ] Integration with third-party tools
- [ ] Advanced reporting features
- [ ] API for external integrations
- [ ] Multi-language support

---

**Built with ❤️ by Christopher Ament & James Jahner using modern web technologies**
Loading