A modern Trello-like project management application built with Vue 3, TypeScript, and Tailwind CSS.
- Features
- Tech Stack
- Project Structure
- Getting Started
- API Documentation
- Authentication
- Development
- Build & Deploy
- Contributing
-
π Authentication & Authorization
- JWT-based authentication
- Protected routes with middleware
- User profile management
-
π Board Management
- Create, update, and delete boards
- Board member management
- Activity tracking
-
π List & Card Management
- Create and organize lists within boards
- Drag-and-drop card management
- Card details with comments and attachments
-
π₯ Team Collaboration
- Team creation and management
- Member invitation and role management
- Real-time collaboration
-
π Notifications
- In-app notification system
- Activity-based notifications
-
π File Management
- File upload and attachment
- Image preview and download
- Vue 3 - Progressive JavaScript framework
- TypeScript - Type-safe JavaScript
- Vite - Fast build tool and dev server
- Tailwind CSS - Utility-first CSS framework
- Shadcn/ui - Beautiful and accessible UI components
- Pinia - Intuitive state management for Vue
- Axios - Promise-based HTTP client with interceptors
- JWT - JSON Web Tokens for secure authentication
- jwt-decode - JWT token parsing
- Lucide Vue - Beautiful icons
- Vue3 Toastify - Toast notifications
- Radix Vue - Unstyled, accessible UI primitives
src/
βββ api/ # API layer
β βββ constants/ # API endpoints
β βββ services/ # API service classes
β βββ types/ # TypeScript type definitions
β βββ axios.client.ts # Axios configuration
βββ components/ # Reusable components
β βββ layouts/ # Layout components
β βββ ui/ # UI components (shadcn/ui)
β βββ ErrorBounder.vue # Error boundary component
βββ composables/ # Vue composables
βββ layouts/ # Page layouts
βββ middlewares/ # Route middlewares
βββ router/ # Vue Router configuration
βββ stores/ # Pinia stores
βββ views/ # Page components
βββ assets/ # Static assets
- Node.js (v18 or higher)
- npm or yarn
- Git
-
Clone the repository
git clone https://github.com/CulesBao/trello-fe.git cd trello-fe -
Install dependencies
npm install # or yarn install -
Environment setup
cp .env.example .env
Update the
.envfile with your API configuration:VITE_API_URL=http://localhost:3000/api
-
Start development server
npm run dev # or yarn dev -
Open your browser Navigate to
http://localhost:5173
The application uses a service-oriented architecture for API calls:
- AuthService - Authentication and user management
- BoardService - Board operations
- ListService - List management within boards
- CardService - Card operations
- CommentService - Comment management
- TeamService - Team collaboration
- NotificationService - Notification handling
- FileService - File upload and management
import { AuthService, BoardService } from '@/api'
// Login
const user = await AuthService.login({
email: 'user@example.com',
password: 'password',
})
// Get user's boards
const boards = await BoardService.getBoards()// Auth store usage
import { useAuthStore } from '@/stores/auth'
const authStore = useAuthStore()
// Check if user is logged in
if (authStore.isLoggedIn) {
// User is authenticated
}
// Logout
authStore.logout()Routes are protected using authentication middleware:
// Route with auth protection
{
path: '/dashboard',
component: Dashboard,
meta: { requiresAuth: true }
}- ESLint - Code linting
- Prettier - Code formatting
- TypeScript - Type checking
# Start development server
npm run dev
# Type checking
npm run type-check
# Linting
npm run lint
# Format code
npm run format
# Build for production
npm run build
# Preview production build
npm run previewThe application includes comprehensive error handling:
- ErrorBounder component for catching Vue errors
- Axios interceptors for HTTP error handling
- Toast notifications for user feedback
npm run build# Build stage
FROM node:18-alpine as build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# Production stage
FROM nginx:alpine
COPY --from=build /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]| Variable | Description | Default |
|---|---|---|
VITE_API_URL |
Backend API URL | http://localhost:3000/api |
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow TypeScript best practices
- Write meaningful commit messages
- Add tests for new features
- Update documentation as needed
This project is licensed under the MIT License - see the LICENSE file for details.
CulesBao
- GitHub: @CulesBao
- Vue.js - The Progressive JavaScript Framework
- Shadcn/ui - Beautiful UI components
- Tailwind CSS - Utility-first CSS framework
- Vite - Next generation frontend tooling
β Star this repository if you find it helpful!