Moonshine was primarily made to replace two of the most frequently used apps on my machine but with time I realised I needed a little more feature-packed project. But before I tell you more about it, here are some screenshots:
To start-off, it was supposed to replace just two apps:
-
A browser extension that shows an inspirational quote, the current time and has a beautiful image background, and
-
Obsidian - Which I used to plan the next day, every night.
As I started to build this, I realised I needed more than just a todo. I encountered two problems and incorporated the solutions for them in Moonshine itself:
- For tasks that needed me to send reminder to a friend, I had to pick up my phone and send a Whatsapp message ( I usually keep my phone away when I'm working, so this was like sending invitation to delightful distractions, which needless to say, was not something I wanted to do).
Solution: I used Novu to incorporate just the feature I wanted: Send reminders to my friends on their phone about a certain task.
- Now the friends reminder thing was sorted out but what if that friend was a work collegue. I couldn't send them phone reminders as that would make me seem pushy and I couldn't just ignore urgent work related matters as well! So I created another workaround:
Solution: I leveraged another feature of Novu to send email reminders on their mail address. This way I was able to send them reminders (and having the mental peace) and not seem like I was trying to push work related tasks.
In the project directory, you can run:
npm install
or
npm i
Either of these commands will install all the packages needed for this project to run.
npm start
Runs the app in the development mode.
Make sure you also complete the set up for environment variables listed below, as without it, the app won't run! 👇
Here is Moonshine running locally on my machine:
To run this project, you will need to add the following environment variable to your .env file
MONGO_CONNECTION_URL
: The URL that you've obtained from MongoDB.
NOVU_API_KEY
: Your Novu API key
Add them both to your .env file.
Client-side:
Novu, React, Redux, DotEnv, Axios, JWTEncode, Moment, React-Icons and more
Server-side:
Novu, Node, Express, MongoDB, Mongoose, BCrypt, JSONWebToken and more
Deployment:
- Front-End: Vercel
- Back-End: Render
-
This repo only contains the back-end code and relies on the front-end code here to work correctly. Make sure to check that out as well.
-
Also, I've written a detailed article about Moonshine and I'll be really happy if you'd give it a heart here! 😍