A modern, full-stack timeline visualization application built with React, TypeScript, and Node.js. Create, manage, and visualize personal timelines with interactive features and a beautiful Material-UI interface.
- Interactive Timeline Visualization: Built with vis-timeline for dynamic timeline viewing
- User Authentication: Secure sign-up/sign-in functionality
- Timeline Management: Create, edit, and delete personal timelines
- Timeline Items: Add detailed events to your timelines with rich content
- Image Upload: Upload and manage images for timeline events
- Responsive Design: Beautiful Material-UI components
- Profile Management: User profile customization
- Protected Routes: Secure access to authenticated content
- React 19 - Modern React with latest features
- TypeScript - Type-safe development
- Vite - Lightning-fast build tool
- Material-UI (MUI) - Modern React component library
- Tailwind CSS - Utility-first CSS framework
- React Router 7 - Client-side routing
- vis-timeline - Interactive timeline visualization
- Axios - HTTP client for API calls
- Node.js - JavaScript runtime
- Express.js - Web application framework
- TypeScript - Type-safe backend development
- MongoDB - NoSQL database
- Mongoose - MongoDB object modeling
- JWT - JSON Web Tokens for authentication
- Cloudinary - Image upload and management
- bcryptjs - Password hashing
m3-project-client/ # Frontend React application
├── src/
│ ├── components/ # Reusable components
│ │ ├── Forms/ # Form components
│ │ ├── layout/ # Layout components
│ │ ├── styled/ # Styled components
│ │ └── vis-timeline/ # Timeline visualization
│ ├── pages/ # Page components
│ ├── context/ # React context providers
│ ├── services/ # API service configurations
│ ├── shared-theme/ # Theme and styling
│ ├── sign-in/ # Authentication components
│ ├── sign-up/ # Registration components
│ └── utils/ # Utility functions
│
timeline-webapp-server/ # Backend Node.js application
├── src/
│ ├── config/ # Configuration files
│ ├── db/ # Database connection
│ ├── middlewares/ # Express middlewares
│ ├── models/ # Mongoose models
│ ├── routes/ # API routes
│ ├── types/ # TypeScript type definitions
│ └── utils/ # Utility functions
- Node.js (v18 or higher)
- npm or yarn
- MongoDB database
- Cloudinary account (for image uploads)
-
Clone the repository
git clone https://github.com/malejaroti/m3-project-client.git cd m3-project-client -
Install frontend dependencies
cd m3-project-client npm install -
Install backend dependencies
cd ../timeline-webapp-server npm install -
Set up environment variables
Frontend (
.envin m3-project-client/):VITE_SERVER_URL="http://localhost:5005"
Backend (
.envin timeline-webapp-server/):PORT=5005 MONGODB_URI=your_mongodb_connection_string JWT_SECRET=your_jwt_secret CLOUDINARY_NAME=your_cloudinary_name CLOUDINARY_KEY=your_cloudinary_key CLOUDINARY_SECRET=your_cloudinary_secret
-
Start the backend server
cd timeline-webapp-server npm run dev -
Start the frontend development server
cd m3-project-client npm run dev -
Open your browser Navigate to
http://localhost:5173to view the application.
POST /auth/signup- User registrationPOST /auth/login- User loginGET /auth/verify- Verify JWT tokenGET /timelines- Get user's timelinesPOST /timelines- Create a new timelinePUT /timelines/:id- Update a timelineDELETE /timelines/:id- Delete a timelineGET /timeline-items/:timelineId- Get timeline itemsPOST /timeline-items- Create a timeline itemPUT /timeline-items/:id- Update a timeline itemDELETE /timeline-items/:id- Delete a timeline itemPOST /upload- Upload images
- Interactive timeline interface using vis-timeline
- Zoom, pan, and navigate through timeline events
- Customizable timeline appearance and colors
- Timeline item details with rich content support
- Secure authentication with JWT tokens
- User profile management
- Protected routes for authenticated users
- Password encryption with bcrypt
- Cloudinary integration for image uploads
- Image optimization and delivery
- Support for multiple image formats
- Drag-and-drop image upload interface
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
npm run dev- Start development server with watch modenpm run build- Build TypeScript to JavaScriptnpm run start- Start production servernpm run type-check- Check TypeScript types
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is part of the Ironhack Web Development Bootcamp - Module 3 Project.
- Ironhack Web Development Bootcamp
- Material-UI team for the excellent component library
- vis-timeline for the timeline visualization library
- All the open-source contributors whose libraries made this project possible


