Skip to content

A monorepo for a whatsapp analyzer service. Leveraging Go, SQS / SNS, S3, Redis, ES6.

License

Notifications You must be signed in to change notification settings

mdanzinger/whatsapptistics

Repository files navigation

whatsapptistics Go Report Card Project Status

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)

sample-report

Getting Started

To get whatsapptistics set up on your system locally, follow the instructions below:

Prerequisites

  1. A working Go environment (or docker)
  2. 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.

  1. S3 Bucket
  2. SQS Queue
  3. SNS Topic (Subscribe the SQS queue created above to the SNS topic)
  4. Dynamodb table
  5. 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>.+)

About

A monorepo for a whatsapp analyzer service. Leveraging Go, SQS / SNS, S3, Redis, ES6.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published