whatsapptistics
Whatsapptistics.com
whatsapptistics is hobby project created to provide a breakdown and detailed analysis of uploaded WhatsApp chats. This is a monorepo for the service, so all code related to whatsapptistics can be found here. The core technologies utilized for this app are Go (for the backend), SQS / SNS (for the job queue system), DynamoDB (to store reports), Redis(to cache reports), Docker(primarily for easy deployment) and an array of frontend technologies (scss,gulp,es6,highchart.js)
Getting Started
To get whatsapptistics set up on your system locally, follow the instructions below:
Prerequisites
- A working
Go
environment (or docker)
- An AWS account to create the necessary services
AWS
While the "business logic" of whatsapptistics is abstracted away using interfaces, AWS services are the only implementation of said interfaces. At some later time I may add some implementations that don't require any third party services, but for now, the following AWS services are required for whatsapptistics to function.
- S3 Bucket
- SQS Queue
- SNS Topic (Subscribe the SQS queue created above to the SNS topic)
- Dynamodb table
- SES Email account
When the following services are created, rename the .env.sample
file to .env
and replace the variables with your own values
mv .env.sample .env
Building
If Docker is not being used, binaries must be built into the project root:
cd cmd/whatsapptistics && go build -o ../../server
cd ../whatsapptistics-consumer && go build -o ../../analyzer
Docker instructions coming soon...
License
This project is licensed under the MIT License - see the LICENSE file for details
Some internal project notes:
Android Regex for breaking apart chat:
(?P<datetime>\d{1,2}\/\d{1,2}\/\d{2}, \d{1,2}:\d{1,2} ((?i)[ap]m))(?: - )(?P<name>.*?)(?::) (?P<message>.+)
IOs:
(?P<datetime>\d{4}\-\d{2}\-\d{2}, \d{1,2}:\d{1,2}:\d{2} ((?i)[ap]m))(?:\]) (?P<name>.*?)(?::) (?P<message>.+)