Taskmaster is a modern task management application built to help organize projects and tasks efficiently. It features a clean, intuitive interface with a focus on performance and user experience. Developed as a personal project, Taskmaster also showcases my frontend development skills, including modern tooling, best practices, and attention to design detail.
- Overview
- Quick Start
- Preview
- Features
- Architecture
- Tech Stack
- Development
- Testing
- Linting and Formatting
- Development Practices
- CI/CD Pipeline
# Clone the repository
git clone git@github.com:alexsantosquispe/taskmaster.git
cd taskmaster
# Install dependencies
pnpm install # or npm install
# Start development server
pnpm devVisit http://localhost:5173 to view the app.
- π Create and manage tasks and projects
- π₯ Multi-user support
- π Light and dark mode
- π± Responsive design
- π§ͺ Component testing with Jest and React Testing Library
- π Component documentation with Storybook
- π Fast development with Vite
- π¨ Modern UI with Tailwind CSS
- π Type-safe with TypeScript
The application follows a modern React architecture with a focus on component composition and separation of concerns:
src/
βββ components/ # Reusable UI components
β βββ atoms/ # Atomic design atoms (basic building blocks)
β βββ molecules/ # Composed components from atoms
βββ config/ # Application configuration
βββ contexts/ # React context providers
βββ hooks/ # Custom React hooks
βββ icons/ # SVG icons and icon components
βββ models/ # TypeScript interfaces and types
βββ pages/ # Page components (routes)
β βββ Dashboard/ # Main dashboard view
β βββ Tasks/ # Tasks management
β βββ Projects/ # Projects management
β βββ Reports/ # Analytics and reporting
β βββ Detail/ # Detailed view components
βββ services/ # API and service layer
βββ utils/ # Utility functions and helpers
βββ mocks/ # Mock data for development
-
Component Architecture:
- Atomic Design methodology for component organization
- Reusable, composable UI components
- Container/Presentational component pattern
-
State Management:
- React Context API for global state
- Local component state for UI-specific state
-
Styling:
- Utility-first CSS with Tailwind CSS
- Component-scoped styles
-
Type Safety:
- Full TypeScript support
- Strict type checking enabled
- Frontend Framework: React 18
- Language: TypeScript
- Build Tool: Vite
- Styling: Tailwind CSS
- Testing: Jest, React Testing Library
- Linting: ESLint
- Formatting: Prettier
- Version Control: Git
dev- Start development serverbuild- Build for productionpreview- Preview production buildtest- Run teststest:coverage- Run tests with coveragetest:update- Update test snapshotslint- Run linterformat- Format code with Prettierstorybook- Start Storybookbuild-storybook- Build Storybook
-
Start the development server:
pnpm dev
The app will be available at
http://localhost:5173 -
(Optional) Run Storybook to view components in isolation:
pnpm storybook
Storybook will be available at
http://localhost:6006
We use Jest and React Testing Library for testing our components and utilities. To run the tests, use the following commands:
# Run all tests
pnpm test
# Run tests with coverage
pnpm test:coverage
# Update test snapshots
pnpm test:update
# Run tests in watch mode
pnpm test:watchThis project uses ESLint for code linting and Prettier for code formatting. We recommend setting up your editor to automatically format and fix linting issues on save.
- TypeScript: Strict mode enabled for type safety
- ESLint: Custom configuration following best practices
- Prettier: Consistent code formatting
- Husky: Git hooks for pre-commit and pre-push
- Pre-commit: Runs linting and type checking
- Pre-push: Runs tests to ensure code quality
- Branch Naming:
feature/feature-name,bugfix/description,hotfix/description - Commit Messages: Follow Conventional Commits
- Pull Requests:
- Link to related issues
- Include screenshots for UI changes
- Request code reviews
- Ensure all tests pass
- Follow SOLID principles
- Keep components small and focused
- Write meaningful commit messages
- Add appropriate test coverage
- Document complex logic
The project includes GitHub Actions workflows for continuous integration:
-
CI Pipeline (.github/workflows/github_ci.yml)
- Runs on every push and pull request
- Checks code formatting with Prettier
- Runs ESLint for code quality
- Executes unit tests with Jest
- Generates test coverage reports
- Builds the application
-
Deployment
- Automatic deployment to production on merge to
main - Preview deployments for pull requests
- Automatic deployment to production on merge to
Husky is configured to run the following on git commit:
- Linting with ESLint
- Type checking with TypeScript
- Formatting with Prettier
Before pushing to remote:
- Runs the full test suite
- Ensures all tests pass
- Verifies build process
# Run linter
pnpm lint
# Fix linting issues
pnpm lint:fix
# Format code
pnpm format

