Skip to content

worldofunreal/kanban-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Kanban App - Collaborative Project Management on Internet Computer

A modern, collaborative project and team management application built on the Internet Computer (ICP) with Rust backend and Vue.js frontend, inspired by Jira and Trello workflow builders.

πŸš€ Features

Core Functionality

  • User Management: Sign up, login, and profile management
  • Team Management: Create, edit, and manage teams with privacy controls
  • Project Management: Create projects owned by individuals or teams
  • Role-Based Access Control: Owner, Manager, and Collaborator roles
  • Invitation System: Invite users via links with role assignment
  • Modern UI: Responsive design with Vue 3 and TailwindCSS

User Roles

  • Owner: Full permissions, can transfer ownership
  • Manager: Can edit projects/teams and invite others
  • Collaborator: Can use features but cannot manage teams/projects

Privacy Features

  • Public/private teams and projects
  • Invite-only access control
  • Role-based permissions

πŸ›  Tech Stack

Backend (Internet Computer)

  • Language: Rust
  • Framework: DFX (Internet Computer SDK)
  • Authentication: Internet Identity integration
  • Storage: Canister stable memory
  • Interface: Candid

Frontend

  • Framework: Vue 3 with Composition API
  • Build Tool: Vite
  • Styling: TailwindCSS
  • State Management: Pinia
  • Routing: Vue Router
  • UI Components: Headless UI

πŸ“ Project Structure

kanban-app/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ backend/                 # Rust canister
β”‚   β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”‚   β”œβ”€β”€ lib.rs          # Main canister logic
β”‚   β”‚   β”‚   β”œβ”€β”€ models/         # Data structures
β”‚   β”‚   β”‚   β”œβ”€β”€ handlers/       # Request handlers
β”‚   β”‚   β”‚   └── utils/          # Utility functions
β”‚   β”‚   └── kanban-app-backend.did  # Candid interface
β”‚   └── frontend/               # Vue.js application
β”‚       β”œβ”€β”€ src/
β”‚       β”‚   β”œβ”€β”€ components/     # Vue components
β”‚       β”‚   β”œβ”€β”€ views/          # Page components
β”‚       β”‚   β”œβ”€β”€ stores/         # Pinia stores
β”‚       β”‚   β”œβ”€β”€ router/         # Vue Router configuration
β”‚       β”‚   └── utils/          # Utility functions
β”‚       └── public/             # Static assets
β”œβ”€β”€ dfx.json                    # DFX configuration
└── package.json               # Frontend dependencies

πŸš€ Getting Started

Prerequisites

Installation

  1. Clone the repository

    git clone <repository-url>
    cd kanban-app
  2. Install frontend dependencies

    cd src/frontend
    npm install
  3. Start local Internet Computer

dfx start --background
  1. Deploy the canisters

dfx deploy


5. **Start the frontend development server**
```bash
   cd src/frontend
   npm run dev

Development Workflow

  1. Backend Development

    • Edit Rust code in src/backend/src/
    • Update Candid interface in src/backend/kanban-app-backend.did
    • Deploy with dfx deploy backend
  2. Frontend Development

    • Edit Vue components in src/frontend/src/
    • Run npm run dev for hot reload
    • Build with npm run build

πŸ“‹ API Reference

User Management

  • create_user(profile: UserProfile) -> Result<UserId, Error>
  • get_user(user_id: UserId) -> Option<User>
  • update_profile(user_id: UserId, profile: UserProfile) -> Result<(), Error>

Team Management

  • create_team(name: String, description: String, is_public: bool) -> Result<TeamId, Error>
  • get_team(team_id: TeamId) -> Option<Team>
  • update_team(team_id: TeamId, updates: TeamUpdate) -> Result<(), Error>
  • delete_team(team_id: TeamId) -> Result<(), Error>

Project Management

  • create_project(name: String, description: String, owner: Owner) -> Result<ProjectId, Error>
  • get_project(project_id: ProjectId) -> Option<Project>
  • update_project(project_id: ProjectId, updates: ProjectUpdate) -> Result<(), Error>
  • transfer_ownership(project_id: ProjectId, new_owner: Owner) -> Result<(), Error>

Access Control

  • invite_user(target: InviteTarget, role: Role, expires_at: Option<Timestamp>) -> Result<InviteId, Error>
  • accept_invite(invite_id: InviteId) -> Result<(), Error>
  • remove_member(target: InviteTarget, user_id: UserId) -> Result<(), Error>

πŸ” Security & Privacy

  • Internet Identity Integration: Secure authentication via Internet Identity
  • Role-Based Access Control: Granular permissions based on user roles
  • Invite-Only Access: Private teams and projects require explicit invitations
  • Ownership Transfer: Secure transfer of project/team ownership

🎨 UI/UX Features

  • Responsive Design: Works on desktop, tablet, and mobile
  • Dark/Light Mode: Toggle between themes
  • Real-time Updates: Live collaboration features
  • Drag & Drop: Intuitive project management interface
  • Search & Filter: Easy navigation through projects and teams

🚧 Roadmap

Phase 1 (Current)

  • Basic user authentication
  • Team and project creation
  • Role-based access control
  • Invitation system

Phase 2

  • Kanban board implementation
  • Task management
  • File attachments
  • Activity feed

Phase 3

  • Advanced workflow automation
  • Time tracking
  • Reporting and analytics
  • Mobile app

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ†˜ Support

  • Documentation: Check the inline code comments and this README
  • Issues: Report bugs and feature requests via GitHub Issues
  • Discussions: Join the community discussions for questions and ideas

πŸ”— Links

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors