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./frontendVITE_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
./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] # 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]
-
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 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 filesFor questions or suggestions:
- π Create an issue
- π§ Contact the author
β If you find this project useful, please give it a star on GitHub!
