Skip to content

neketli/projectly

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

212 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

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

     NUXT_PUBLIC_API_HOST=http://localhost:8080 # or your API URL
     NUXT_PUBLIC_S3_HOST=http://localhost:8080
     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

πŸ“ž 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

 
 
 

Contributors