Giter Site home page Giter Site logo

monicahq / monica Goto Github PK

View Code? Open in Web Editor NEW
20.5K 286.0 2.1K 142.91 MB

Personal CRM. Remember everything about your friends, family and business relationships.

Home Page: https://beta.monicahq.com

License: GNU Affero General Public License v3.0

PHP 76.37% Shell 0.18% Vue 23.24% Dockerfile 0.15% Blade 0.05% PLpgSQL 0.01%
laravel crm friends family social prm php hacktoberfest

monica's Introduction

Monica’s Logo

Document your life

Docker pulls Lines of code Code coverage License

Docs - Bug report

Monica is an open source personal relationship management system, that lets you document your life.

Warning

This branch is in development. It’s our beta version.

If you want to browse the stable and current version, see the 4.x branch.

Table of contents

Introduction

Monica is an open-source web application that enables you to document your life, organize, and log your interactions with your family and friends. We call it a PRM, or Personal Relationship Management. Imagine a CRM—a commonly used tool by sales teams in the corporate world—for your friends and family.

Features

  • Add and manage contacts
  • Define relationships between contacts
  • Reminders
  • Automatic reminders for birthdays
  • Ability to add notes to a contact
  • Ability to record how you met someone
  • Management of activities with a contact
  • Management of tasks
  • Management of addresses and all the different ways to contact someone
  • Management of contact field types
  • Management of a contact’s pets
  • Top of the art diary to keep track of what’s happening in your life
  • Ability to record how your day went
  • Upload documents and photos
  • Ability to define custom genders
  • Ability to define custom activity types
  • Ability to favorite contacts
  • Multiple vaults and users
  • Labels to organize contacts
  • Ability to define what section should appear on the contact sheet
  • Multiple currencies
  • Translated in 27 languages

Who is it for?

This project is for people who want to document their lives and those who have difficulty remembering details about the lives of people they care about.

We’ve also had a lot of positive reviews from people with Asperger syndrome, Alzheimer’s disease, and introverts who use our app every day.

What Monica isn’t

  • Monica is not a social network and it never will be. It’s not meant to be social. It’s designed to be the opposite: it’s for your eyes only.
  • Monica is not a smart assistant. It won’t guess what you want to do. It’s actually pretty dumb: it will only send you emails for the things you asked to be reminded of.
  • Monica does not have built-in AI with integrations like ChatGPT.
  • Monica is not a tool that will scan your data and do nasty things with it. It’s your data, your server, do whatever you want with it. You’re in control of your data.

Contribute

Do you want to lend a hand? That’s great! We accept contributions from everyone, regardless of form.

Here are some of the things you can do to help.

Contribute as a community

  • Unlike Fight Club, the best way to help is to actually talk about Monica as much as you can in blog posts and articles, or on social media.
  • You can answer questions in the issue tracker to help other community members.
  • You can financially support Monica’s development on Patreon or by subscribing to a paid account.

Contribute as a developer

Principles, vision, goals and strategy

We want to use technology in a way that does not harm human relationships, unlike big social networks.

Principles

Monica has a few principles.

  • It should help improve relationships.
  • It should be simple to use, simple to contribute to, simple to understand, extremely simple to maintain.
  • It is not a social network and never will be.
  • It is not and never will be ad-supported.
  • Users are not and never will be tracked.
  • It should be transparent.
  • It should be open-source.
  • It should do one thing (documenting your life) extremely well, and nothing more.
  • It should be well documented.

Vision

Monica’s vision is to help people have more meaningful relationships.

Goals

We want to provide a platform that is:

  • really easy to use: we value simplicity over anything else.
  • open-source: we believe everyone should be able to contribute to this tool, and see for themselves that nothing nasty is done behind the scenes that would go against the best interests of the users. We also want to leverage the community to build attractive features and do things that would not be possible otherwise.
  • easy to contribute to: we want to keep the codebase as simple as possible. This has two big advantages: anyone can contribute, and it’s easily maintainable on the long run.
  • available everywhere: Monica should be able to run on any desktop OS or mobile phone easily. This will be made possible by making sure the tool is easily installable by anyone who wants to either contribute or host the platform themselves.

Why Open Source?

Why is Monica open source? Is it risky? Could someone steal my code and use it to start a for-profit business that could hurt my own? Why reveal our strategy to the world? We’ve already received these kinds of questions in our emails.

The answer is simple: yes, you can fork Monica and create a competing project, make money from it (even if the license is not ideal for that) and we won’t be aware. But that’s okay, we don’t mind.

We wanted to open source Monica for several reasons:

  • We believe that this tool can really change people’s lives. We aim to make money from this project, but also want everyone to benefit. Open sourcing it will help Monica become much bigger than we imagine. We believe the software should follow our vision, but we must be humble enough to recognize that ideas come from everywhere and people may have better ideas than us.
  • You can’t make something great alone. While Monica could become a company and hire a bunch of super smart people to work on it, you can’t beat the manpower of an entire community. Open sourcing the product means bugs will be fixed faster, features will be developed faster, and more importantly, developers will be able to contribute to a tool that positively changes their own lives and the lives of other people.
  • Doing things in a transparent way leads to formidable things. People respect the project more when they can see how it’s being worked on. You can’t hide nasty things in the code. You can’t do things behind the backs of your users. Doing everything in the open is a major driving force that motivates you to keep doing what’s right.
  • Once you’ve created a community of passionate developers around your project, you’ve won. Developers are powerful influencers: they create apps, discuss your product on forums, and share it with their networks. Nurture your relationship with developers – users will follow.

Patreon

You can support the development of Monica on Patreon. Thanks for your help.

Contact

Team

Our team is made of two core members:

We are also fortunate to have an amazing community of developers who help us greatly.

Thank you, open source

Monica makes use of numerous open-source projects and we are deeply grateful. We hope that by offering Monica as a free, open-source project, we can help others in the same way these programs have helped us.

License

Copyright © 2016–2023

Licensed under the AGPL License.

monica's People

Contributors

abdabdii avatar ahmod001 avatar akn101 avatar amansultani avatar asbiin avatar canvural avatar dependabot[bot] avatar depfu[bot] avatar djaiss avatar evanlihou avatar gautiert avatar ignacio0407 avatar imgbot[bot] avatar jensgryspeert avatar julian-louis avatar mishagp avatar njelich avatar securid avatar stylecibot avatar sylvainmetayer avatar szepeviktor avatar thor-son avatar tuffert avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

monica's Issues

Add 'me'

'Me' as a contact is important, specially to define relationships of others to yourself. One way to do this is to simply add yourself as a contact. But a better approach would be to have that option in the settings.

Country Selection in Personal Information is broken

Country dropdown has 17010 (!) options, with lots of duplicates in the list.
This affects production, and is caused by the county seeding not truncating the table beforehand. PR created, untested but looks trivial.

Custom fields

A core challenge of any product is that every user is different, and if you satisfy all of them you face feature bloat. I'd like to open the floor to dicussing the idea of implementing a modular metadata system for person records.

Ultimately, every user of the app has different metadata they care about. Additionally, within a single user account you have different types of people: family, coworker, gym buddy, etc. It doesn't make sense to add the "favorite workout" or "job title" field to every single person. As such, I feel it would be a neat solution to allow users to add templates for people. As long as the core UI framework is capable of supporting the different types of values, from a developer standpoint your work is done.

In my opinion, three types of metadata inputs are enough:

  1. free form text - for notes and general musings.
  2. lists of strings - groups of people the person belongs to, food allergies, favorite bands
  3. key value pairs - wife's name, dog's age, birthday date, etc

Common patterns can be combined into templates, such as "coworker" or "gym buddy", and selected when creating a new person.

What do you think? It makes the API a bit more complex, since you have unstructured data, but ultimately this provides freedom to all users to manage data the way they prefer.

Getting error: too many redirects

Thanks for building this!

Here's what I did:

  1. Sign up for an account
  2. Play around, create a friend, etc.
  3. Read the changelog
  4. I was stuck - the header wouldn't take me back so I clicked "Login" (there should have been some way to get back to the main app)
  5. After clicking login I can't get in at all and getting the too many redirects error.

Gender should be optional/allow other values

The gender field seems to be required on records wherever it is present, and only has male/female choices. This forces me to enter bad data where I don't know someone's gender or they identify as some other gender.

Ideally it would be nice to allow other values and 'unknown', but at a minimum making that field optional would at least avoid forcing the user to include known bad data.

(Given the subject matter, I really hope this doesn't become a flamewar...please feel free to lock/delete if it is in danger of doing so. And for the record, and perhaps in hope of averting that, I'll say that this is an actual issue that came up for me when trying the app with online contacts where I don't even know their gender for certain, and some friends who specifically identify as some non-binary option, not an "improve the world with social justice issue.")

Link journal entries to people

Currently the "Journal" and "Activities" are separate. That seems rather artificial - how about merging them and allowing journal entries to link one or more people to them?

And for extra credit: allow linking people using Markdown syntax from the journal entries, e.g.

I met [Mon](Monica Geller) on the street and talked to her about such-and-such. Then we met [Joey](Joey Tribbiani and the three of us had coffee.

Add export function in JSON

It would be useful to have an "export data" function that would export all the data held by an account into a JSON file. Of course this should be API-callable for automation purposes.

Feedback from user

Timezone: it shouldn't default to UTC -05:00. Maybe guess based on
user location?

Gender: it shouldn't default to man. I don't want my contacts to be
men by default (it should probably be an option field).

In a contact page, in "PERSONAL INFORMATION": I can see that
"Birthdate is not set." However, the edit button is easy to miss.

"Edit personal information": Why does the country default to US?

  • Is there a way to enter the birthdate without the year. I sometimes
    know when someone's birthday is, but remembering the year is more
    difficult.

  • Apparently, the format for birthdate is MM/DD/YYYY. This is very
    confusing for me and there's no indication in the UI. Ideally, there
    should be an option in the settings + the format description in the
    page.

  • In the main page, "Latest actions" shows the date as: YYYY-MM-DD. This
    is not consistent with the birthdate.

  • FOOD PREFERENCIES: I instinctively entered one information per line.
    Line returns are not shown in the profile page.

  • Debts: Why is it in dollars? I don't use dollars.

  • Journal: it's not clear why I'd want to use it. It doesn't seem
    related to contact management. Maybe there should be a way to link a
    story with people. Then, show the story on the person's page?

  • The Kid/Significant other feature doesn't seem useful, because they
    are not treated as real people. Treat them as real people, and add
    link information (I think it's
    #19).

  • I've checked the French version, it looks like half of the text is
    still in English.

Feature Request: Chat Integration

I'm actually still in the process of setting up Monica on my machine, but from what I read in the Readme, it only mentioned that the means for communicating events to user is by email. Rather than email, I think making chatbot would make this software more accessible to many people (for instance, its more common for people from my country to access chat apps rather then their email).

From what I know, implementing chatbot notification is rather easy nowadays. From what I have tried in Telegram, its only a matter of implementing some simple REST API call. I think this is pretty similiar for Slack or LINE (I don't actually have any experience in both apps, but I think it should be).

Nonetheless, many appreciations for all Monica Contributors!

Speed up "Add a person" UI

As a user with many friends to add, I'd like to be able to quickly get all the basic info for people who matter to me into the system in as few interactions as possible.

Some ideas:

  • give options "Submit and add more information" and "Submit and add someone else" to submit a new person
  • don't default to "Man," force me to click on "Man" or "Woman" for each person (although this is an extra click 50% of the time, I forgot I had to select "Woman" for several people and had to come back and edit, which took more time over all)
  • include "Add a new person" as a direct link in the header

Sandstorm.io package

I might try to attempt this myself, but I wanted to open an issue to indicate interest, specify requirements, and point out the benefits.

Sandstorm is an app hosting platform that allows users to easily run their own web apps as simply as installing apps on their phone, and it avoids the developer having to bear the burden of maintaining a web service. Read more here: https://sandstorm.io/developer

As a single user app, I expect this to port fairly cleanly. The issues that need to be addressed for are as follows:

  • Sandstorm.io manages authentication for users, so the authentication in Monica would need to be disabled in the Sandstorm package.

  • My brief read mentioned that Monica sends emails, and that would need to be replaced with Sandstorm's notifications API.

Exact birthdate copy typo

If you indicate an exacte birthdate for this person, we will create a new reminder for you - so you'll be notified every year when it's time to celebrate this person's birthdate.

Importing data

It would be nice to have options to automatically populate the database from either files (eg. CSV) or third parties (eg. Google Contacts with the People API).

Provide a drop-in Zipfile without the need of compiling or installing

Tldr: Please provide a drop-in Zipfile of the project (including a basic installer), which is useable in a simple php webhosting environment with nothing more than a sftp upload and a single mysql database (no node.js or composer available).
That way it is very easy for the project to gain a wider audience.

A possible way could be to compile everything needed by hand and zip it or by an CI job as suggested by @adrum below:

As far as releases go, we could add a TravisCI build to automatically fetch/build all the dependencies and place them where they need to build. The .tar.gz or zip would then be available in the releases section of the repo.


old description which started the whole discussion :)
Hi!

This is a really nice project - i was totally excited and eager to test it out, until ....i read the setup procedures...
I am a professional php developer for years. I am able to create complex network and server setups inside and outside of the "cloud" and i am using most of your mentioned tools on a daily basis for quite some time - i am one of those people, who are able to setup this project without a problem.

I just don't see why small and promising projects like this one need to choke themselves on compiling css, having nodejs installed, setting up virtual machines or (soon(tm) ..pls not) providing docker stuff.

How about just simple php and css? Lamp stack anyone? Please make it fancy and please go ahead and use composer - maybe with a tarball, where all the composer files are already provided.
Just think about all the people out there with a limited php hosting package or a toyserver/raspberry at home with a spare-time-understanding of setting up stuff like wordpress. They will be eager to use it - that's why wordpress is so successful.

Thanks alot and keep up the good work!

Let the user disable new registrations

I would highly appreciate an option / setting / config parameter to completetly turn off new registrations. At the moment it seems that everyone that has access to the instance I set up can create an account and start adding contacts.
Even if the app separates all the data saved for users I would feel uncomfortable to know anybody could use my app. Possible problem: security issues and access to an other users data via exploits. Not cool.

Such an option would just disable the register controller and remove the sign up button from the login page.

People need more metadata

Most people have more than one email and phone number, plus websites, twitter username.

I think adding something were we have a either a table for each type of data like the email table, address table, phone number table and so on. That might not scale well so an alternative is to make a general person metadata table and have a name and value column relating to one person.
The second approach isn't great database design but allows for any data to be stored about a person.

I am looking forward to getting this going with a pull request or two but any wondering what everyone thinks is the better way to go

Edit button is not obvious

edit

The edit button blends into the person page a bit too well. It was difficult to find. I suggest add a way to edit in the header perhaps with an icon ?

Accomplishments

Allowing users to make a note on all the great things a contact has done...including themselves.

The primary inspiration behind this feature came from an article I was reading. Inside the article, it mentioned that I should take a note of all the times I did something awesome because when I'm sad, I can look back at all the awesome stuff I've done...

So an accomplishment feature would be great to solve this.

Thoughts and opinions anyone?

Static Mail To

I noticed here: https://github.com/monicahq/monica/blob/2e6760e7dbcccd5375707ce1b7ce9c099f40f4b7/app/Jobs/SendNewUserAlert.php

You have the new user alert static, and not using an environment variable. Not only does this result in you being sent notifications for everyone's instances with functional outgoing email, it exposes potentially private information.

As an aside:

'from' => ['address' => '[email protected]', 'name' => 'Regis from Monica'],

Should probably use environment variables here.

License vs Wording

There's potential confusion because the software is released under the MIT license, which permits, among other things to commercially exploit the software, but the README file asks to not commercially exploit it. Can't have it both ways - either the license needs to be changed or the README's wording removed or changed to make it clear that the request to not use it commercially is a non-binding request.

Docker (with Kubernetes)

I'll be interested in creating a docker and kubernetes compatibile image for monica. Will be a bit busy though, so if it's not done feel free to do so on your own.

Docker (Compose) Environment

This project would greatly benefit from a Dockerfile, as well as a docker-compose.yml for easy onboarding of new developers. I for one am unfamiliar with the Laravel ecosystem, so this would be of great help.

Testing

What kind of help are you looking for with testing? I have recently had some experience with Selenium and Sauce Labs for UI testing (using Python) and might be interesting in helping out.

Food Preferencies

Throughout the code and UI, the term 'preferencies' is used rather than the correct spelling 'preferences'. While this is fine (your choice) for class names and variable names, it looks like the French made it into the English UI.

Dashboard tabs are broken

On the main page, the two buttons “What's coming” and “Latest actions” are somehow broken.

We can click on them to switch tabs but their state doesn't change (the first one is always selected).

How to reproduce the issue

  1. Go to https://app.monicahq.com/dashboard
  2. Click on the second tab
  3. Click on the first one

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.