Skip to content

Projectly is an open source project management system designed to simplify processes and task tracking

License

Notifications You must be signed in to change notification settings

neketli/projectly

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Projectly

License: MIT Go Version Vue.js

preview

Projectly is a modern open-source project management system designed to streamline task tracking and team collaboration. Ease of use and effective UI/UX make projectly a good tool for any team!

✨ Features

πŸ‘₯ Teams & Projects

  • Collaborative team workspaces
  • Project statistics and insights
  • Kanban boards for task progress tracking
  • Flexible project management tools

πŸ” User Management

  • Add users with customizable roles
  • Editable user profiles
  • Role-based access control

βœ… Task Management

  • Create and update task statuses
  • Attach documents and files
  • Commenting and mention system for communication
  • Detailed progress tracking

πŸ’‘ How to use

Install and prepare the project by following this guide, then you can use docker-compose to easily set up projectly on your host.

Use latest version of projectly:

git clone https://github.com/neketli/projectly.git
docker compose up -d

πŸ› οΈ Tech Stack

Frontend

  • Vue.js 3 - Progressive JavaScript framework
  • Nuxt 3 - For static site generation
  • Composition API - As a modern approach to code splitting
  • TypeScript - For types
  • Tailwind CSS - Easy utility-first CSS styles
  • Element Plus - Pretty UI component library

Backend

  • Golang - High-performance and easy to use
  • PostgreSQL - Reliable relational database
  • MinIO - Object storage
  • Docker - Application containerization
  • Nginx - Web server and reverse proxy

πŸš€ Quick start and development

Thank you for considering contributing to Projectly! Here are some steps to get you started:

Prerequisites

Ensure you have the following installed:

Installation

  1. Clone the Repository

    git clone https://github.com/neketli/projectly.git
    cd projectly
  2. Configure Environment

    Create a .env file in the project root and set the environment variables:

     POSTGRES_USER=postgres
     POSTGRES_PASSWORD=[change_password]
     POSTGRES_DB=projectly
    
     MINIO_ROOT_USER=minioadmin
     MINIO_ROOT_PASSWORD=[change_password]

    Also you need to set .env in ./frontend

     VITE_API_URL=http://localhost:8080 # or your API URL
     NUXT_PUBLIC_S3_HOST=https://projectly.ru
     NUXT_PUBLIC_SITE_URL=projectly.ru
     NUXT_APP_BASE_URL=/

    And do this again for ./backend

     APP_MODE=dev
    
     PG_DSN=postgresql://[postgres_user]:[postgres_password]@[host]:5432/projectly?sslmode=disable
    
     S3_HOST=[minio_host]
     S3_ACCESS=[minio_access_token]
     S3_SECRET=[minio_secret_token]
    
     AUTH_ACCESS_SECRET=[jwt_secret_encoding_key]
     AUTH_REFRESH_SECRET=[jwt_secret_encoding_key]
     
     # this will works only with domain (and not work locally btw)
     # for setup check links below
     AUTH_GOOGLE_CLIENT_ID=
     AUTH_GOOGLE_CLIENT_SECRET=
     AUTH_GOOGLE_CALLBACK_URL=http://localhost:8080/api/v1/auth/google/callback
    
     AUTH_YANDEX_CLIENT_ID=
     AUTH_YANDEX_CLIENT_SECRET=
     AUTH_YANDEX_CALLBACK_URL=http://localhost:8080/api/v1/auth/yandex/callback
    
     SESSION_SECRET=[any_token_for_setup_sessions]

    Setup google login

    Setup yandex login

  3. Set Up Infrastructure

    docker compose up postgres minio nginx -d
  4. Install Dependencies

    cd ./backend
    go mod download
     cd ../frontend
     npm install
  5. Make migrations

    Make sure you have a .env in ./backend and that you have created a bucket in your S3 provider with the correct access policies

    cd ./backend
    make migrate-up
  6. Run the Application

    Backend:

    cd backend
    make build
    make run

    Frontend (in a new terminal):

    cd frontend
    npm run dev
  7. Access the Application

    Open your browser and navigate to: http://localhost:3000

Backend commands

# Build the application
make build

# Run the application
make run

# Generates swagger by swag-go doc comments
make swagger

# Applies up migrations to DB
make migrate-up

# Applies down migrations to DB
make migrate-down

Frontend commands

# Development mode
npm run dev

# Build for production
npm run build

# Generate static files
npm run generate

# Preview production build
npm run preview

# Lint code with fixing
npm run lint

πŸ“ Project Structure

projectly
β”œβ”€ docker-compose.yml # Docker compose project config
β”œβ”€ backend            # Golang backend
β”‚  β”œβ”€ cmd             # Application entry points
β”‚  β”‚  └─ server       # Backend HTTP server
β”‚  β”œβ”€ config          # Project configuration files
β”‚  β”œβ”€ docs            # Project docs
β”‚  β”‚  └─ swagger.yaml # HTTP Swagger/OpenAPI
β”‚  β”œβ”€ go.mod          # Go module declaration
β”‚  β”œβ”€ Makefile        # Backend make commands
β”‚  β”œβ”€ internal        # App core
β”‚  β”‚  β”œβ”€ app          # Main entry point
β”‚  β”‚  └─ domain       # App domains
β”‚  β”‚     β”œβ”€ task          # Domain example - task
β”‚  β”‚     β”‚  β”œβ”€ delivery   # HTTP Handlers
β”‚  β”‚     β”‚  β”œβ”€ entity     # Domain entities (structs)
β”‚  β”‚     β”‚  β”œβ”€ repository # Data saving
β”‚  β”‚     β”‚  └─ usecase    # Core business logic of module
β”‚  β”‚     β”œβ”€ board
β”‚  β”‚     β”œβ”€ media
β”‚  β”‚     β”œβ”€ project
β”‚  β”‚     β”œβ”€ status
β”‚  β”‚     β”œβ”€ team
β”‚  β”‚     └─ user
β”‚  β”œβ”€ migrations        # Database migrations
β”‚  └─ pkg               # Reusable packages
β”œβ”€ frontend          # Vue 3 (Nuxt.js) Frontend
β”‚  β”œβ”€ app.vue        # Entry point
β”‚  β”œβ”€ assets         # App static assets
β”‚  β”œβ”€ components     # Reusable domain / UI components
β”‚  β”œβ”€ composables    # Reusable logic / APIs
β”‚  β”œβ”€ error.vue      # Fallback error page
β”‚  β”œβ”€ i18n           # Locales
β”‚  β”œβ”€ layouts        # Page base layouts
β”‚  β”œβ”€ middleware     # Frontend middlewares
β”‚  β”œβ”€ nuxt.config.ts # Nuxt config
β”‚  β”œβ”€ pages          # App pages
β”‚  β”œβ”€ plugins        # App plugins
β”‚  β”œβ”€ public         # Public files
β”‚  β”œβ”€ store          # Pinia stores
β”‚  └─ types          # App TS types
└─ landing # Projectly.ru landing page
   β”œβ”€ app.vue        # Entry point
   β”œβ”€ assets         # Landing page static assets
   β”œβ”€ components     # Landing sections/UI components
   β”œβ”€ i18n           # Locales
   β”œβ”€ nuxt.config.ts # Nuxt config
   β”œβ”€ pages          # Landing pages
   └─ public         # Public files

πŸ“ž Support

For questions or suggestions:


⭐ If you find this project useful, please give it a star on GitHub!

About

Projectly is an open source project management system designed to simplify processes and task tracking

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages