@Numbers for the app you can use react-native. It's trivial to make good looking apps, with access to native features.
The hardest part is the sync layer. If you use something like couchdb as DB, your app could use pouchdb.
That's the simplest solution I can think of.
You can use local notifications in android to set a notification on certain datetimes (when your pomodoro cycle ends?), and you can also receive an Intent when the notification is shown, so you can schedule the next notification.