Skip to content

Justinianus2001/trello-web

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

8 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“‹ Trello Clone - Frontend

A modern, responsive Trello clone frontend built with React, Redux Toolkit, and Material-UI. Features drag-and-drop functionality, real-time updates, and a beautiful user interface.

โœจ Features

  • ๐ŸŽจ Modern UI/UX

    • Material-UI components
    • Dark/Light mode toggle
    • Responsive design for all devices
    • Smooth animations and transitions
  • ๐Ÿ” Authentication

    • User registration and login
    • Email verification
    • Protected routes
    • Persistent authentication with JWT
  • ๐Ÿ“Š Board Management

    • Create and manage multiple boards
    • Board customization (title, description, background)
    • Board member management
    • Starred and recent boards
  • ๐ŸŽฏ Drag & Drop

    • Intuitive card dragging between columns
    • Column reordering
    • Smooth drag-and-drop experience
    • Built with DnD Kit
  • ๐Ÿ“ Card Management

    • Create, edit, and delete cards
    • Rich text descriptions with Markdown
    • Card activities and comments
    • File attachments
    • Card cover images
  • ๐Ÿ‘ฅ Collaboration

    • Invite users to boards
    • Real-time updates via WebSocket
    • User notifications
    • Board member avatars
  • ๐Ÿ” Search & Navigation

    • Quick board search
    • Autocomplete suggestions
    • Workspace navigation
    • Breadcrumb navigation
  • โš™๏ธ User Settings

    • Profile management
    • Avatar upload
    • Security settings
    • Account preferences

๐Ÿ› ๏ธ Tech Stack

  • Framework: React 18
  • Build Tool: Vite
  • State Management: Redux Toolkit
  • UI Library: Material-UI (MUI)
  • Styling: Emotion (CSS-in-JS)
  • Drag & Drop: @dnd-kit
  • HTTP Client: Axios
  • WebSocket: Socket.io-client
  • Routing: React Router v6
  • Form Handling: React Hook Form
  • Markdown Editor: React Markdown Editor Lite
  • Date Handling: date-fns / dayjs

๐Ÿ“ Project Structure

trello-web/
โ”œโ”€โ”€ public/              # Static assets
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ apis/           # API integration
โ”‚   โ”‚   โ””โ”€โ”€ index.js
โ”‚   โ”œโ”€โ”€ assets/         # Images, icons, etc.
โ”‚   โ”‚   โ”œโ”€โ”€ 404/
โ”‚   โ”‚   โ””โ”€โ”€ auth/
โ”‚   โ”œโ”€โ”€ components/     # Reusable components
โ”‚   โ”‚   โ”œโ”€โ”€ AppBar/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ AppBar.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Menus/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Notifications/
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ SearchBoards/
โ”‚   โ”‚   โ”œโ”€โ”€ Form/
โ”‚   โ”‚   โ”œโ”€โ”€ Loading/
โ”‚   โ”‚   โ”œโ”€โ”€ Modal/
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ ActiveCard/
โ”‚   โ”‚   โ””โ”€โ”€ ModeSelect/
โ”‚   โ”œโ”€โ”€ customHooks/    # Custom React hooks
โ”‚   โ”‚   โ””โ”€โ”€ useDebounceFn.js
โ”‚   โ”œโ”€โ”€ customLibraries/ # Custom library configurations
โ”‚   โ”‚   โ””โ”€โ”€ DndKitSensors.js
โ”‚   โ”œโ”€โ”€ pages/          # Page components
โ”‚   โ”‚   โ”œโ”€โ”€ 404/
โ”‚   โ”‚   โ”œโ”€โ”€ Auth/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Auth.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ LoginForm.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ RegisterForm.jsx
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ AccountVerification.jsx
โ”‚   โ”‚   โ”œโ”€โ”€ Boards/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ index.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ _id.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ create.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ BoardBar/
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ BoardContent/
โ”‚   โ”‚   โ”œโ”€โ”€ Settings/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Settings.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ AccountTab.jsx
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ SecurityTab.jsx
โ”‚   โ”‚   โ””โ”€โ”€ Users/
โ”‚   โ”œโ”€โ”€ redux/          # Redux store and slices
โ”‚   โ”‚   โ”œโ”€โ”€ store.js
โ”‚   โ”‚   โ”œโ”€โ”€ activeBoard/
โ”‚   โ”‚   โ”œโ”€โ”€ activeCard/
โ”‚   โ”‚   โ”œโ”€โ”€ notifications/
โ”‚   โ”‚   โ””โ”€โ”€ user/
โ”‚   โ”œโ”€โ”€ utils/          # Utility functions
โ”‚   โ”‚   โ”œโ”€โ”€ authorizeAxios.js
โ”‚   โ”‚   โ”œโ”€โ”€ constants.js
โ”‚   โ”‚   โ”œโ”€โ”€ formatters.js
โ”‚   โ”‚   โ”œโ”€โ”€ sorts.js
โ”‚   โ”‚   โ””โ”€โ”€ validators.js
โ”‚   โ”œโ”€โ”€ App.jsx         # Main App component
โ”‚   โ”œโ”€โ”€ main.jsx        # Application entry point
โ”‚   โ”œโ”€โ”€ socketClient.js # WebSocket client setup
โ”‚   โ””โ”€โ”€ theme.js        # MUI theme configuration
โ”œโ”€โ”€ .eslintrc.cjs
โ”œโ”€โ”€ index.html
โ”œโ”€โ”€ jsconfig.json
โ”œโ”€โ”€ package.json
โ”œโ”€โ”€ vercel.json
โ””โ”€โ”€ vite.config.js

๐Ÿš€ Getting Started

Prerequisites

  • Node.js (v16 or higher)
  • npm or yarn
  • Running backend API (see trello-api)

Installation

  1. Clone the repository

    git clone https://github.com/Justinianus2001/trello-web.git
    cd trello-web
  2. Install dependencies

    npm install
  3. Set up environment variables

    Create a .env file in the root directory:

    VITE_API_URL=http://localhost:8017/v1
    VITE_SOCKET_URL=http://localhost:8017
  4. Start the development server

    npm run dev

    The application will be available at http://localhost:5173

Production Build

npm run build
npm run preview

๐ŸŽฎ Usage

Getting Started

  1. Register an Account

    • Navigate to the registration page
    • Fill in your details
    • Verify your email address
  2. Create a Board

    • Click "Create new board"
    • Add a title and description
    • Customize the background
  3. Add Columns

    • Click "Add another list"
    • Name your column
    • Start adding cards
  4. Manage Cards

    • Click "Add a card" in any column
    • Drag cards between columns
    • Click on a card to view details
  5. Collaborate

    • Invite team members to your board
    • See real-time updates
    • Receive notifications

๐ŸŽจ Customization

Theme

The application supports dark and light modes. Customize the theme in src/theme.js:

// Example: Change primary color
primary: {
  main: '#1976d2', // Your custom color
}

Constants

Update application constants in src/utils/constants.js:

  • Board limits
  • Card limits
  • File upload limits
  • And more...

๐Ÿ“ฑ Responsive Design

The application is fully responsive and works seamlessly on:

  • ๐Ÿ“ฑ Mobile devices (320px and up)
  • ๐Ÿ“ฑ Tablets (768px and up)
  • ๐Ÿ’ป Desktops (1024px and up)
  • ๐Ÿ–ฅ๏ธ Large screens (1920px and up)

๐Ÿ”Œ API Integration

All API calls are centralized in src/apis/index.js. The application uses Axios with interceptors for:

  • Automatic token injection
  • Request/response logging
  • Error handling
  • Token refresh

๐Ÿ”„ State Management

Redux Toolkit is used for global state management:

  • User Slice: Authentication and user data
  • Active Board Slice: Current board state
  • Active Card Slice: Selected card details
  • Notifications Slice: Real-time notifications

๐ŸŒ WebSocket Integration

Real-time features powered by Socket.io:

  • Live board updates
  • User invitations
  • Notifications
  • Collaborative editing

๐Ÿงช Testing

npm run test

๐Ÿ“ Code Style

This project uses ESLint for code linting:

npm run lint

๐Ÿš€ Deployment

Vercel (Recommended)

  1. Install Vercel CLI

    npm i -g vercel
  2. Deploy

    vercel

The vercel.json configuration is already included.

Other Platforms

  • Netlify: Drag and drop the dist folder
  • GitHub Pages: Use gh-pages package
  • AWS S3: Deploy static build files

๐Ÿ”ง Configuration Files

  • vite.config.js: Vite configuration
  • jsconfig.json: JavaScript configuration for imports
  • .eslintrc.cjs: ESLint rules
  • vercel.json: Vercel deployment settings

๐Ÿค Contributing

  1. Fork the repository
  2. Create your 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

Coding Guidelines

  • Follow the existing code style
  • Write meaningful commit messages
  • Add comments for complex logic
  • Test your changes thoroughly

๐Ÿ—บ๏ธ Roadmap

  • Add board templates
  • Implement labels/tags
  • Add due dates and reminders
  • Calendar view
  • Advanced search and filters
  • Mobile app (React Native)
  • Offline support

๐Ÿ“„ License

This project is licensed under the MIT License.

๐Ÿ‘จโ€๐Ÿ’ป Author

Hoang Le Ngoc - @Justinianus2001

๐Ÿ™ Acknowledgments

๐Ÿ“ง Contact

For questions or support, please open an issue or contact: lengochoang681@gmail.com


Backend Repository: trello-api

Live Demo: https://trello-web-amber-omega.vercel.app

About

A Frontend Web Client built with React.js to complete a full-stack Trello-style project.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published