Welcome to Kiwe, a social media platform where you can chirp, like, rechirp, and connect with others in a fun and engaging way. This readme.md provides an overview of the features and updates in version 3, an installation guide, as well as a sneak peek at what's planned for version 4.
- A domain to host on with an SSL certificate; the code relies on SSL to allow notifications and real-time chat on iOS.
- A machine that can run NodeJS; I am using a cloud VM with 1 vCPU and 2GB ram and it is more enough for my testing and development purposes.
- I will use ubuntu for commands but most will also work on other platforms, if not then find the equivalent for your OS/ distro.
npm install
You will need 4 files, domain.cert.pem, intermediate.cert.pem, public.key.pem and private.key.pem. Place these at the root of the project. If you are hosting this as a fork on GitHub or anywhere else where project files will be publically accessible, don't upload the private key file to the version control and instead upload it directly to your server to prevent leaking your private key. The private key is already added to the .gitignore so don't worry about it accidentally syncing from your server.
Setup a MongoDB instance, you can host it yourself or use their cloud hosting. Once you have that ready, copy your connection string. It should look something like this: mongodb+srv://username:[email protected]/?retryWrites=true&w=majority. On your server, copy the .env.example file and rename it to .env and then paste your connection string in.
If you wish, you can create a github webhook that will instruct the server to automatically pull any committed changes and restart the server. Edit deployment.sh and change the line REPO_URL="https://github.com/cameronball/kiwe.git" to whatever the url to your repo is, remebering to add the .git at the end.
If you don't already have pm2 then install it for your system.
Once it is installed:
If you want auto-pull run:
pm2 start webhookListener.js
Then run:
pm2 start app.js
The server should now be running, you can check using
pm2 status
- Admin panel finished - user verification, ban user, add debug likes, get site stats
- Allow app to be installed as a PWA.
- Added hashtags, hashtags get automatically highlighted, and link to a page where you can browse all posts containing the hashtag.
- Trending sidebar
- Popular homepage tab (Will likely improve algorithm for this tab in v4 when it may switch to being a "For you" tab)
- Image chirps
- Image messages
- Code chirps (Still need to implement reposting code chirps)
- Added two factor authentication
- Inline advert chirps
- Redirect http traffic to https by creating a http redirect server (fixes a safari issue where sometimes a user putting in the page url will get put onto an error page due to no page being served on port 80)
- Highlight the icon of the page that you are currently on in the side panel.
- Add site favicon
- Add legal page links to signup page, allow access to them when not signed in.
- Add alt text to lots more buttons to improve accessibility.
- Increased modal size for quite a few modals where content previously felt squished (Such as legal modals)
- Fix the border radius on the post interaction buttons, previously the code used %, now we define a px value so that the rounding isn't weird.
- Fix issues with CSS caching by adding a ?v=X to the end.
- Allow more characters in user bios - previously only a-Z were allowed.
- Change default icons to FA regular rather than solid and change some icons to fontawesome duotone ones which look nicer in some places.
- When the user is on the page for an individual post, clicking on the post won't refresh the page, this allows the user to highlight and copy text.
- Implement code chirp reposts
- Improve popular/for you page algorithm
- Add ability to mark answers as correct in replies
- Add websockets code so that when an image message is sent it is displayed immediately rather than having to refresh for it to be displayed.
- E2E Encryption
- Bookmarks
- Polls
- Muting and blocking
- Mentions
Features which are planned but which may or may not be in v4 depending on the size and timeline for v4 release
- Dark mode / themes in general (Considering just implementing dark mode in v4 and then adding more themes later on)
- Video, Audio calls
- Audio spaces
- Communities
- Chirp analytics - impression count, more maybe?
- Emoji picker
- More advanced search tools - date, media contained, like count etc
- Community Notes
- Advert creation & buying center
- Private accounts
- Circles/ close friends
- Reshares with comment (quote repost)
- Website embeds
- Read receipts
Kiwe offers a wide range of features, including:
- Chirping (Tweeting)
- Liking chirps
- Rechirping
- Replies
- Pinning chirps
- Profile photos
- Profile banners
- Following and followers
- Home page showcasing followers
- Deleting posts
- Moderators can delete posts
- Messaging with typing indicators
- Real-time message sending and receiving
- Direct Messaging (DM) and group chat creation
- Search for posts and users
- User bios
- Notifications page for various interactions
- Admin panel finished - user verification, ban user, add debug likes, get site stats
- Allow app to be installed as a PWA.
- Added hashtags, hashtags get automatically highlighted, and link to a page where you can browse all posts containing the hashtag.
- Trending sidebar
- Popular homepage tab (Will likely improve algorithm for this tab in v4 when it may switch to being a "For you" tab)
- Image chirps & messages
- Code chirps (Still need to implement reposting code chirps)
- Added two factor authentication
- Inline advert chirps
- Redirect http traffic to https by creating a http redirect server (fixes a safari issue where sometimes a user putting in the page url will get put onto an error page due to no page being served on port 80)
- Highlight the icon of the page that you are currently on in the side panel.
- Add site favicon
- Add legal page links to signup page, allow access to them when not signed in.
- Add alt text to lots more buttons to improve accessibility.
We hope you enjoy using Kiwe! If you have any feedback or suggestions, please feel free to share them with us. Stay connected and chirp away!