Personal Management System

Your web application for managing personal data

Personal Management System

Purpose

I decided to create my own system, because playing around with tons of plugins for WordPress and writing customizations to some existing CRMs would take me as much time as writing my own system and by knowing the logic from its core it's easier for me to write extensions and add additional modules - whenever I need.

Secondly, I do not want to end up integrating a docker based cloud with CMS. Furthermore I just needed an application like that to keep me organized and I'm tired of having some very personal data in OneDrive, another data in Google cloud, other documents in my local machine and others in my email. With this application all data is in one place and well organized.

As the Author of this project, I worked alone as a team and this is a portfolio project for Holberton School. I needed an application like PMS to keep me organized. Hence the reason for this project.

This application will enable any user not to have some personal data scattered everywhere.

Description

Personal Management System (PMS) is a web-app tool designed to organize the essentials of everyday life, everything from a simple to-do list, notes to file organization. No more thinking about unhandled pending issues, no more sticky notes on the desk, or tons of files, no more searching for physical documents in folders. This application is simple, flexible and it’s designed for personal use.

It's easier to understand this web application when you think about a CMS (WordPress) or CRM (SugarCRM); the logic behind this system is very similar to those two. My PMS may offer fewer possibilities than those systems above, but it just does what I want it to do. Additionally, writing extensions is not too hard, depending on the logic required. Anyone with development knowledge can pretty much write their own extensions for personal needs.

Features

Easy to use

Intuitive and user-friendly. PMS has been designed to be clear and handy so that everything is organized and divided into the proper categories and subsections.

Freedom of mind

PMS allows to keep control of schedules, notes, contacts, to-do lists and even manage documentations and images. Say goodbye to sticky notes and endless search for lost document.

Powered by Symfony and Typescript

The core of the project relies on the Symfony and Typescript which makes it easier to maintain, extend and optimize.

Available options and modules

🎯 Todo/Goals - Keep a track of your personal goals. You can use todolist to keep track of your goals progress or use payments submodule to keep an eye of the money amount that you want to collect for something.

πŸ“– Notes - Add any personal note to desired category. Here, you can keep any small information that you need; it can be either quick notes from phone call, bunch of information collected all around different pages or some links to things that you want to check somewhere later in future.

πŸ“ž Contacts - You ever feel like You got dozens of phone contacts, emails etc. that you would like to get rid of, or make some safety backup in case you loose your phone? With this simple module you can organize your personal contacts.

πŸ”‘ Passwords - We all get to a certain point when there are too many passwords to handle. With the Passwords module You can keep Your passwords encrypted in Your database, while on the frontend there is a copy button that will fetch You back the original password.

πŸ† Achievements - Want to keep a track on anything cool you did, just put it in this module.

πŸ“… Schedules - The purpose of this module is to keep track of any recurring things you got to do like for example car oil changes, payments, visits etc. Data added to the groups of schedules will be displayed on Dashboard and in the notification bell.

πŸ” Issues - In this section You can track any ongiong/pending cases that have to be eventually resolved but it's not necessary required to keep constantly an eye on it - yet it might be required to go back one day in future to it so it allows to add subrecords of performed contacts and progress in given case.

🌴 Travels - Having some ideas of places to visit but without any specific plans to it? Add it to this Module with google map link and some images so you can come back to it at any moment. The image will remind you why you were interested in this particular place.

πŸ’Έ Payments - Don't know how much money You spend on food, travels, domestic shopping? Simply from now on add every shopping details to the list and let it do all the calculations, alongside with summary for given month.

πŸ›’ Shopping - You got plans to buy something in future? Add it to the list, and then just check it out, maybe You will be able to buy this particular thing just now.

πŸ’» Job - The Afterhours submodule is a nice way to keep an eye of all the afterhours you've made in work. With this you can also separate specified minutes/hours for certain goal. For example you need 24h for trip and 4h to do something. Just add some time to pre existing goal, create new one or leave it blank (will go to general purpose pool). Holidays submodule is a simple way to track down how many days did You used from yearly holidays pool.

πŸ“· Images - This module allows You to organize Your photos/scans/downloaded pics in form of masonry galleries. Clicking on image miniature will call lightbox gallery with possibility to rename, remove or download image. You can create as many galleries (folders) as You want.

πŸ“ Files - Files uploaded for this module are visible in form of DataTable where You can see simple information about the file - that is: extension, filetype icon (if there is one defined for given type), file size. Files can be renamed, downloaded and removed.

🎬 Video - Got small video downloaded from internet or recorded on phone? That's a module to store it then - supports most popular web video formats.

πŸ“‘ Reports - contains readonly reports created from already existing data in database.

How to install/documentation

Linux installer

In both cases it's explicitly required to install composer dependencies at first!

  • For standard installation call:

      composer pms-installer
    
  • For installation from within docker usage call:

      composer pms-installer-docker
    

Future development plans

Improvements

I will just add some bug fixes/improvements/modules from time to time - when necessary.

Browsers Support

  • Chrome

I mean for real. Just Chrome. I know about bug with copying password in Firefox for example. But I just did everything in Chrome so I'm not really planning to check that on other browsers. And before You ask why I supported chrome only - I did not do it because β€œchrome is the best" or anything like that, I just use that browser for 98% of time and that's just it.

Tech

Personal Management System is a web application which can be ran either in Windows and Linux enviroment. Everything is by default tested on Ubuntu 20.x.

Used languages/frameworks/solutions

  • Php 7.4.x - Used to develop the application

  • Css - used to apply styles across all pages of the application

  • Node 14.17.0 - for backend

  • Bootstrap - for frontend development framework

  • Webpack - module bundler for JavaScript β€” it takes all the code from the application and makes it usable in a web browser.

Used packages

Challenges encountered

The first challenge I encountered during the research phase is the complexity of Personal Management System algorithms. Choosing the most suitable algorithm for generating Personal Management System based on the project requirements proved to be more challenging than initially anticipated.

Next challenge I encountered was determining the optimal data structure for representing the Personal Management System and its components, such as datatable, forms and messages. I had to carefully consider the trade-offs between efficiency and simplicity.

How I overcame the challenges

To overcome these challenges, I spent additional time exploring and comparing various Personal Management System algorithm generation.

Regarding the data structure, I revised my initial plan and opted for a combination of adjacency lists and nested dictionaries. This data structure allows for efficient storage of related information.

Conclusion

This project has really helped me to learn enough tech skills. Developing these skills will allow me to feel more confident in using emerging technology and I will become faster in finishing tasks.

With the wealth of knowledge I have acquired from this project, Working as a Developer will be an easy task for me. and I am going to build on this knowledge to become the best in my career as a Software Engineer.

Contacts

Mail - emenike.nathaniel@gmail.com

GitHub: https://github.com/Githubnath/Personal-management-system

Portfolio landing page: https://githubnath.github.io//

LinkedIn: https://www.linkedin.com/in/nathaniel-emenike/

Β