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!
- Collaborative team workspaces
- Project statistics and insights
- Kanban boards for task progress tracking
- Flexible project management tools
- Add users with customizable roles
- Editable user profiles
- Role-based access control
- Create and update task statuses
- Attach documents and files
- Commenting and mention system for communication
- Detailed progress tracking
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- 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
- Golang - High-performance and easy to use
- PostgreSQL - Reliable relational database
- MinIO - Object storage
- Docker - Application containerization
- Nginx - Web server and reverse proxy
Thank you for considering contributing to Projectly! Here are some steps to get you started:
Ensure you have the following installed:
-
Clone the Repository
git clone https://github.com/neketli/projectly.git cd projectly -
Configure Environment
Create a
.envfile 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
.envin./frontendNUXT_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
./backendAPP_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] 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]
-
Set Up Infrastructure
docker compose up postgres minio nginx -d
-
Install Dependencies
cd ./backend go mod downloadcd ../frontend npm install -
Make migrations
Make sure you have a
.envin./backendand that you have created a bucket in your S3 provider with the correct access policiescd ./backend make migrate-up -
Run the Application
Backend:
cd backend make build make runFrontend (in a new terminal):
cd frontend npm run dev -
Access the Application
Open your browser and navigate to:
http://localhost:3000
# 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# 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 lintprojectly
├─ 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 typesFor questions or suggestions:
- 🐛 Create an issue
- 📧 Contact the author
⭐ If you find this project useful, please give it a star on GitHub!
