![](https://private-user-images.githubusercontent.com/71013416/304565207-57cb4f81-6f21-42c8-a3d9-e30b2b3a9a91.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjYwNzkzMjMsIm5iZiI6MTcyNjA3OTAyMywicGF0aCI6Ii83MTAxMzQxNi8zMDQ1NjUyMDctNTdjYjRmODEtNmYyMS00MmM4LWEzZDktZTMwYjJiM2E5YTkxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTExVDE4MjM0M1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTgyMjQxNGJhMjBmYjQxZDc3YjVlMjNkNjIyYzIxNjFmM2IwYzE5ZDljYmY3ZmY1M2JhODkwMjdlNWQ1MGJkNjgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.cosrNra9dLtdSbXvocCiZoT9u8WNUrDIN469Doaxf10)
![](https://private-user-images.githubusercontent.com/71013416/304565210-0b2d57a4-7ee0-406c-9919-c10d77686840.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjYwNzkzMjMsIm5iZiI6MTcyNjA3OTAyMywicGF0aCI6Ii83MTAxMzQxNi8zMDQ1NjUyMTAtMGIyZDU3YTQtN2VlMC00MDZjLTk5MTktYzEwZDc3Njg2ODQwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTExVDE4MjM0M1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWE1N2RkZjE3YjM4MDMyYzRiMmJkZGQ0YmRkZTZmODhmMGE1MGFjNWM4ZWZiNGUzZTM5NGM4NmFjMjBhZjA0MjkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.fnLvsMthqujRsA5JpQd4cyZ7aE-LOTc5gefYPXYbOYo)
![](https://private-user-images.githubusercontent.com/71013416/304565198-7fcfcd2e-036e-46de-ab9d-e019d87844d1.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjYwNzkzMjMsIm5iZiI6MTcyNjA3OTAyMywicGF0aCI6Ii83MTAxMzQxNi8zMDQ1NjUxOTgtN2ZjZmNkMmUtMDM2ZS00NmRlLWFiOWQtZTAxOWQ4Nzg0NGQxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTExVDE4MjM0M1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQ4NGMwOGEwMjM0MDRjYjA0OTM0ZTk3Njk2YTlmNjNhYjE1OWE4NjgzMTE5YTUyMWQ1Zjk4ZmE2YmY1OTM1YWEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.QS7KYBfSwleIr7dF6NG9G9Fws1zyI213Hb8RZuSlMkc)
![](https://private-user-images.githubusercontent.com/71013416/304565211-7c5f8246-e59c-410a-8342-43de5e2c61ff.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjYwNzkzMjMsIm5iZiI6MTcyNjA3OTAyMywicGF0aCI6Ii83MTAxMzQxNi8zMDQ1NjUyMTEtN2M1ZjgyNDYtZTU5Yy00MTBhLTgzNDItNDNkZTVlMmM2MWZmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTExVDE4MjM0M1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQ5Yjk5OWVhNTM4OGM2MDk1NTVkZjVkYjMwY2RkYjVkZWU1NjBkODkzYTY0OWUzMmMyOTJjNjlhYzUxOGQ2ZWQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.hfg286zpeaaBwDpG7KsXtxcD_IaZLeaxuuV92lgX3jQ)
![](https://private-user-images.githubusercontent.com/71013416/304565894-8a45a324-bad9-4043-9b44-211260f31fb1.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjYwNzkzMjMsIm5iZiI6MTcyNjA3OTAyMywicGF0aCI6Ii83MTAxMzQxNi8zMDQ1NjU4OTQtOGE0NWEzMjQtYmFkOS00MDQzLTliNDQtMjExMjYwZjMxZmIxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MTElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTExVDE4MjM0M1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTg4YWYwODlhZmZhYTUzMWQ0MDljNjlhM2U3ODJmYTY4Y2ZiOWNlNzE2N2M5N2RhY2U4ODViNjY5ZWUyNzY3NzAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.crWHKZCjItW69lUToAlVL8WUHeVuHIMaUXIhl_sLuDg)
Because Meesman Indexbeleggen does not provide their own app, I decided to build one for myself independently. The app utilizes a custom API endpoint that can scrape account details from mijn.meesman.nl. The whole app is designed using best practices in security so we never store raw credentials, security keys are encrypted and stored on your local device and all data is sent over https. Feel free to check out the code on how the app works. For details on the API, refer to the repository: MeesmanAPI.
I intend to use the app for personal use, but if there is enough demand I can release the app through the appstores. Please let me know you are interested in this issue: #2
- Push notification on Friday to tell you markets are closed
- Push notification on Monday to tell you your account has been updated
- Account screen: Shows your accounts, balance and a graph
- Returns screen: Shows your current returns (In % and €), your cost base, a overview per year and what €1 euro invested would have returned now.
- Transactions screen: Shows your transactions per week as well as your returns and balance.
- The app is constructed using Expo (React Native) and is designed to function on both Android and iOS platforms. However, thorough testing has been conducted primarily on iOS as I don't have a Android device.
- The backend is a AWS Lambda Function using FastAPI (Python) see documentation here MeesmanAPI
- The app may only display data for the first Meesman account if multiple accounts are associated. It's on my radar and something I might fix in the future
- The logout button does clear your session, but it still requires you to restart the app to actually log out.
It is important to note that I have no affiliation with Meesman Indexbeleggen. This app is an independent project developed to enhance the user experience for Meesman investors. While efforts have been made to ensure accurate functionality, users are advised to exercise caution and carefully consider the known limitations mentioned above.
By using this app, you acknowledge that it is an unofficial solution and that I am not liable for any inaccuracies, losses, or inconveniences that may arise from its use. Your feedback and suggestions for improvement are welcome, just open an issue.
#For developers: How to Run
- Node.js and npm installed on your machine. You can download them from https://nodejs.org/.
- npm install -g expo-cli clone the repo
git clone https://github.com/two-trick-pony-NL/MeesMonkey-Unofficial-Meesman-App.git
go into the foldercd MeesMonkey
install dependanciesnpm install
Run the local servernpx expo start
MeesMonkey uses security best practices. We're very aware that your username and password and financial data are sensitive and as a consequence we are very carefull with that data. Also note that we are MeesMonkey users ourself and also want to protect our financial data as good as we can.
Therefor we decided on the following design principles:
- We don't store any of your data anywhere --> Any persistant data is stored with you, encrypted, on your device
- We don't track any of your data --> There are 0 analytics tools installed (except for Sentry that reports crashes of the app anonymously )
- We use best practices in security:
- The app itself is locked with Biometrics (FaceID on iOS)
- EAS 128 Encryption using Fernet Tokens
- All communication over HTTPS
- Tokens and Credentials are stored in the Headers and not in URL's.
- We don't store raw passwords anywhere
- Your credentials are stored as a encrypted token on your local device. - If you want to stop using MeesMonkey all you have to do is delete the app. This will delete the encrypted token from your device.
If you want to review our security implementation in code then please check out the following code. Feel free to open an issue if there is something you'd like to see improved.