devaslanphp / project-management Goto Github PK
View Code? Open in Web Editor NEWAn open source Project management tool based on Laravel and Filament
Home Page: https://devaslanphp.github.io/project-management
License: MIT License
An open source Project management tool based on Laravel and Filament
Home Page: https://devaslanphp.github.io/project-management
License: MIT License
Would love to give this a go in a Docker container if possible. ๐ณ
Added 'ignoreRecord' attribute to the 'unique' validation rule for 'ticket_prefix' when updating a project.
Currently in the file app/Filament/Resources/ProjectResource.php there is a unique validation rule
->unique(Project::class, column: 'ticket_prefix')
that prevents updating a Project because the prefix matches one in the database. The solution is to ignore the Project itself for this rule.
->unique(Project::class, column: 'ticket_prefix', ignoreRecord: true)
This solves the issue. I tried to create a branch with the solution to create a PR, but I do not have the necessary permissions to do so. Therefore, I am presenting the problem and the solution to you.
Thank you very much.
When trying to login via Twitter, the following error happens:
[2023-03-13 19:14:35] production.ERROR: Call to undefined method Laravel\Socialite\One\TwitterProvider::scopes() {"exception":"[object] (Error(code: 0): Call to undefined method Laravel\\Socialite\\One\\TwitterProvider::scopes() at /srv/helper/project-management/vendor/dutchcodingcompany/filament-socialite/src/Http/Controllers/SocialiteLoginController.php:32)
[stacktrace]
#0 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): DutchCodingCompany\\FilamentSocialite\\Http\\Controllers\\SocialiteLoginController->redirectToProvider()
#1 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(43): Illuminate\\Routing\\Controller->callAction()
#2 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Routing/Route.php(259): Illuminate\\Routing\\ControllerDispatcher->dispatch()
#3 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\\Routing\\Route->runController()
#4 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Routing/Router.php(798): Illuminate\\Routing\\Route->run()
#5 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}()
#6 /srv/helper/project-management/app/Http/Middleware/LocaleMiddleware.php(20): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#7 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\LocaleMiddleware->handle()
#8 /srv/helper/project-management/vendor/filament/filament/src/Http/Middleware/MirrorConfigToSubpackages.php(30): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#9 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Filament\\Http\\Middleware\\MirrorConfigToSubpackages->handle()
#10 /srv/helper/project-management/vendor/filament/filament/src/Http/Middleware/DispatchServingFilamentEvent.php(15): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#11 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Filament\\Http\\Middleware\\DispatchServingFilamentEvent->handle()
#12 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#13 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle()
#14 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(78): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#15 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle()
#16 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php(40): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#17 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Session\\Middleware\\AuthenticateSession->handle()
#18 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#19 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle()
#20 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#21 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\\Session\\Middleware\\StartSession->handleStatefulRequest()
#22 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Session\\Middleware\\StartSession->handle()
#23 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#24 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle()
#25 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#26 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle()
#27 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#28 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Routing/Router.php(797): Illuminate\\Pipeline\\Pipeline->then()
#29 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Routing/Router.php(776): Illuminate\\Routing\\Router->runRouteWithinStack()
#30 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Routing/Router.php(740): Illuminate\\Routing\\Router->runRoute()
#31 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Routing/Router.php(729): Illuminate\\Routing\\Router->dispatchToRoute()
#32 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(190): Illuminate\\Routing\\Router->dispatch()
#33 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}()
#34 /srv/helper/project-management/vendor/livewire/livewire/src/DisableBrowserCache.php(19): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#35 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Livewire\\DisableBrowserCache->handle()
#36 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#37 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#38 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle()
#39 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#40 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(40): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#41 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle()
#42 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#43 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle()
#44 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#45 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle()
#46 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#47 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Http\\Middleware\\HandleCors->handle()
#48 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#49 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Http\\Middleware\\TrustProxies->handle()
#50 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#51 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(165): Illuminate\\Pipeline\\Pipeline->then()
#52 /srv/helper/project-management/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(134): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter()
#53 /srv/helper/project-management/public/index.php(51): Illuminate\\Foundation\\Http\\Kernel->handle()
#54 {main}
"}
Google, Github and OIDC are OK.
Hey there,
is it possible to support multiple mandants with one application?
It would be a nice experience for customers and much easier for hosting.
Thanks in advance!
Jonas
Are you planning to upgrade to filament v3?
I could be of some help. I already have ideas of how we could implement new Panels (Project, Project Settings, Administration...)
I'm trying to import my jira projects and tasks. without success now I work in localhost
Where can I find the documentation to be able to import correctly?
Hi there,
first of all thank you for the project. I did the installation as written in the doku. I can log in with Jon DOE but, if I register a new user I see in the DB but no email is triggered. And yes, I am running php artisan queue:work
.
Do you have any idea, why this might be?
In the ticket overview, there are Images with the intials of the users. I think this is not scaled correct.
The problem seems to be in the css class "w-6" and "h-6"
<img src="https://ui-avatars.com/api/?name=M+H&color=FFFFFF&background=2ebabd" alt="Markus Hofelich" data-popover-target="popover-user-5-640b53faed210" class="w-6 h-6 rounded-full bg-gray-200 bg-cover bg-center">
Add the following options to ticket view page:
If i move a Ticket from Project1 with Prefix "P1" to Project2 with Prefix "P2", the prefix does not change.
It is possible to create same Ticket Prefix in multiple Projects. I dont think thats a desired behavior.
I worked previously on a timesheet app combined with a ticket management. And we had activities attached to the logged hours. We had something like this
It will help on reporting at the end of a month to see how many hours were spent in developing testing etc.
While Time Tracking is an important feature, and a single task can be completed in different moments or days, I suggest you to improove the time log functionality in two ways:
1) Add Comment on Time Log
and display data on Time Logged Tab and on Export Time CSV.
2) Expose the "Log Time" Button out of three dots menu.
If using this project behind an reverse proxy with HTTPS, there is an problem with the verification links (403 invalid signature).
The issue is caused, that the TrustProxies-Middleware do not have an value for proxies.
I'm not sure about laravel, maybe it can done with env-Variables.
For me I fixed it with an ConfigMap in Kubernetes, but a solution with an env-Variable would be the more elegant way.
Hey there,
thank you for the wonderful WebApp. It is the one thing that makes my life much easier at this moment.
I have only one problem.
The Mails will be send to every user that is in a project.
It would be much better to send only to users, that have subscribed to a ticket.
Thanks in advance.
hi.
I've downloaded code and installed in devilbox normally. Created database, made migration and ran seed command.
But i cant login to app. Ran php artisan make:filament-user as well, user was created but still unable to login.
I've then disabled f2a auth but no luck so far.
Any idea what might be happening?
Thanks in advance
Hi, I have multiple lingual people in my office, I want to use it in defferent language as per uer selected, in general settings, it changes the language for all, so if you tell me any easy way to handle this situation, because what in my mind is to create a duplicate project and change the lanugauage but that seems not professional.
Add Jira integration, to let an administrator import issues from a Jira software
Maybe use this package https://github.com/devmoath/jira-laravel
Hi,
If I do npm run build
or npm run dev
I get the following error:
:~/NettSite/helper$ npm run build
> build
> vite build
file:///home/william/NettSite/helper/node_modules/vite/bin/vite.js:7
await import('source-map-support').then((r) => r.default.install())
^^^^^
SyntaxError: Unexpected reserved word
at Loader.moduleStrategy (internal/modules/esm/translators.js:133:18)
at async link (internal/modules/esm/module_job.js:42:21)
Laravel 9.45.1
node v12.22.9
npm 8.5.1
Ubuntu 22.04
package.json:
{
"private": true,
"scripts": {
"dev": "vite",
"build": "vite build"
},
"devDependencies": {
"@tailwindcss/forms": "^0.5.3",
"@tailwindcss/typography": "^0.5.7",
"autoprefixer": "^10.4.13",
"axios": "^1.1.2",
"laravel-vite-plugin": "^0.6.1",
"lodash": "^4.17.19",
"postcss": "^8.1.14",
"sass": "^1.55.0",
"tailwindcss": "^3.2.1",
"tippy.js": "^6.3.7",
"vite": "^3.2.6"
},
"dependencies": {
"flowbite": "^1.5.3"
}
}
Hello.
I am very interested in this project.
Now, I am facing a problem in installing this project.
I was following the below steps to install the project, but Seeder terminated with an error.
https://devaslanphp.github.io/project-management/#/installation?id=database
The error is as follows.
SQLSTATE[HY000]: General error: 1364 Field 'locked' doesn't have a default value (SQL: insert into `settings` (`created_at`, `group`, `name`, `payload`, `updated_at`) values (2023-09-14 23:42:47, general, site_name, "Helper", 2023-09-14 23:42:47), (2023-09-14 23:42:47, general, enable_registration, true, 2023-09-14 23:42:47), (2023-09-14 23:42:47, general, site_logo, null, 2023-09-14 23:42:47), (2023-09-14 23:42:47, general, enable_social_login, "1", 2023-09-14 23:42:47), (2023-09-14 23:42:47, general, site_language, "en", 2023-09-14 23:42:47), (2023-09-14 23:42:47, general, default_role, "1", 2023-09-14 23:42:47), (2023-09-14 23:42:47, general, enable_login_form, "1", 2023-09-14 23:42:47), (2023-09-14 23:42:47, general, enable_oidc_login, "1", 2023-09-14 23:42:47) on duplicate key update `payload` = values(`payload`), `updated_at` = values(`updated_at`))
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:760
756โ // If an exception occurs when attempting to run a query, we'll format the error
757โ // message to include the bindings with SQL, which will make this exception a
758โ // lot more helpful to the developer instead of just the database's errors.
759โ catch (Exception $e) {
โ 760โ throw new QueryException(
761โ $query, $this->prepareBindings($bindings), $e
762โ );
763โ }
764โ }
+10 vendor frames
11 database/seeders/PermissionsSeeder.php:71
Spatie\LaravelSettings\Settings::save()
+8 vendor frames
20 database/seeders/DatabaseSeeder.php:17
Illuminate\Database\Seeder::call()
This error says that the 'locked' column is not specified when inserting into the settings table and there is no default value.
I need help in resolving this issue.
Thanks in advance.
If you want to replicate:
please can i contribute
It would be nice to have the possibility and integrate the project management into Gitlab. Therefor you can use a custom issue tracker (ref). To use it, you can reference your tickets with <PREFIX>-<NUMBER>
but with the current route setup you cannot just put say example.com/tickets/<PREFIX>/<NUMBER>
or example.com/tickets/<PREFIX>-<NUMBER>
I think it would be way nicer then just the id in the URL.
public function createEpic(): void { if($this->project) { $this->epic = new Epic(); $this->epic->project_id = $this->project->id; } }
I think it will be a great idea to have a change log file where you can put all the things from a release and not make any bigger the readme file.
In my case I would love to use this platform to organize some game development that my friends and I do as a hobby. Would be great if I could skip the SMTP stuff, it's really annoying to get any relay service working in the first place, not to mention getting the emails to land in stuff like Gmail. I definitely don't want to host internal SMTP for this either.
Did get to play around with the platform a bit, and really wish I could use it! Great work otherwise
Is it possible if we could get Wiki feature similar to Confluence? Especially linking issues in the wiki pages would be amazing
Hey
Just wanted to mention that according to the documentation, it is saying to use 'https://github.com/devaslanphp/project-management-docs.git' for cloning the project instead of 'https://github.com/devaslanphp/project-management.git'.
It would be very nice to have the Option to Maybe use Redis for Broadcasting instead of Pusher. Goal should be to have a complete self hosted platform available. As for now I don't see it used in production when you have to access third party applications.
I'm willing to help where I can.
Would it be possible to implement a more open protocol for single sign-on like OIDC?
The open-source library Passport.js could be a solution if needed.
It would be helpful if a due date could be stored for a ticket
Hi there,
I'm trying out the new docker image and use a reverse proxy to access my helper instance.
The issue now is, that the assets do not seem to be loaded via https but via http, which causes issues:
I already set the APP_URL
to match my https url, but that did not change anything.
Would really appriciate some hints :)
Thanks!
I think we are missing a few things from this component
If think of anything else please add.
my project run only with artisan command. not running by http://localhost/project-management/public . please help me with solve the issue
Users who do not have permissions to delete things can do so through the checkbox lists and selecting "Delete selected".
I often need custom fields, especially for issues. The scope for a custom field should be
In Redmine you can do this very easy. I know its not as easy to implement as you need for Filament. But it would be a great enhancement.
Hi,
I tested a fresh installation, and after migrate and db:seed I tryed to login using [email protected] / Passw@rd and seems not work (login invalid on form).
btw, I suggest to replace on Database\Seeders\DefaultUserSeeder.php the hashed password from:
'password' => '$2a$12$h/.Jq3QGHYoJBLBo8hw1mOtJOmtU.BVJFbBWFC7XAVXmE5gOjdXV.', // Passw@rd
to:
'password' => bcrypt('Passw@rd'),
Hello, I hope you are well.
I have two problems and I want to tell you about them in the hope of finding a solution.
Hi Helper Team,
I am facing an issue where, after clicking on any notification, the URL changes to localhost. and How can we setup the application in shared hosting (hostinger). Please help!
Thanks
Another suggestion, but maybe it's more complicated is to add that functionality directly on Comment Tab, like do GitLab.
Infact, on gitlab, when you comment an issue you can write something like "/spend 30m" that means that the comment also add 30 minutes with that comment to Time Log.
and just a suggestion, can be done something like this:
Originally posted by @denistorresan in #9 (comment)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.