Slackr is a real-time messaging platform inspired by Slack, built using vanilla JavaScript. This project demonstrates my ability to build complex web applications using modern web technologies without relying on frameworks.
- User registration and login system
- Profile management with photo upload
- Password management with secure validation
- Error handling with user-friendly notifications
- Create and join public/private channels
- View channel details and member list
- Edit channel information (name, description)
- Leave channels
- Send and receive messages in channels
- Edit and delete own messages
- Message reactions with emojis
- Message pinning functionality
- Message pagination
- User profiles with photos and bios
- Invite users to channels
- View other users' profiles
- Real-time updates for new messages
- Photo upload and sharing in messages
- Image preview with modal view
- Thumbnail generation
- Vanilla JavaScript (ES6+)
- HTML5 & CSS3
- Fetch API for HTTP requests
- Local Storage for data persistence
- DOM manipulation
- Event handling
- Promise-based asynchronous operations
- RESTful API integration
- JWT authentication
- File upload handling
- Real-time data synchronization
- Building a single-page application without frameworks
- Implementing real-time updates using polling
- Managing complex state without a state management library
- Handling file uploads and image processing
- Creating a responsive and accessible UI
- JavaScript (ES6+)
- HTML5
- CSS3
- Vanilla JavaScript (No frameworks)
- Fetch API
- Local Storage API
- DOM API
- File API
- Canvas API (for image processing)
- Node.js
- Express.js
- JSON Web Tokens (JWT)
- File System (fs) module
- HTTP/HTTPS modules
- npm (Node Package Manager)
- http-server (for local development)
- Git (version control)
- RESTful API endpoints
- File upload endpoints
- Authentication endpoints
- Real-time data polling
- JSON file-based storage
- Local Storage for client-side caching
- Session Storage for temporary data
- JWT-based authentication
- Password hashing
- Input validation
- XSS prevention
- CORS implementation
- Node.js (v14 or higher)
- npm (v6 or higher)
- Clone the repository:
git clone git@github.com:AnnaWu23/Slackr.git- Install backend dependencies:
cd backend
npm install- Start the backend server:
npm start- In a new terminal, start the frontend server:
cd frontend
npx http-server -p 8080- Open your browser and navigate to:
http://localhost:8080
slackr/
├── frontend/ # Frontend application
│ ├── src/ # Source code
│ ├── styles/ # CSS files
│ └── index.html # Main HTML file
├── backend/ # Backend server
│ ├── src/ # Server source code
│ └── database.json # Database file
└── README.md # Project documentation
Through building this project, I gained:
- Deep understanding of vanilla JavaScript and DOM manipulation
- Experience with building complex single-page applications
- Knowledge of RESTful API integration
- Understanding of real-time web application concepts
- Skills in handling file uploads and media processing
- Experience with responsive design and accessibility
- Implement WebSocket for real-time updates
- Add end-to-end encryption for messages
- Implement message search functionality
- Add support for more media types
- Implement user presence indicators
This project is for demonstration purposes only.