@xoron I don't want to discourage you at all - in fact I think your goal is not just noble but also worth aspiring to.
- My recommendation is always to scout out existing solutions, protocols and standards and see if those can be salvaged / used and if not, reason why. #PGP/MIME may seem crusty but a good UI can make it easy. Same.goes for #OMEMO & #OTR...
But whatever you do, please "DO NOT DIY ENCRYPTION!"
- Instead delegate it to drop-in libraries (i.e. crypto++ for C++) that are well, maintained and getting audited.
Prioritize features early on and make a decision what you want and if/how these can be accomplished. If necessary, have different modes / functions one has to context-switch (i.e. videocalling can't work in an airgapped network unless your callers are in the same (W)LAN).
- If possible choose to stay platform-independent in terms of tech, so like #WebCall, #JitsiMeet, etc. you can simply package that up with nw.js... (Except if you need like a minimalist, (n)curses-style TUI tool like #enc)
User-test early on. Espechally with "#TechIlliterates", if you can.
- Focus on a #MVP (minimum viable product) early on.
Write #documentation early on since that'll remove headaches. And I don't just mean #CommentYourCode but go deep and explain in detail why you chose something. This will help not just you.
Make yourself a list what you like and dislike from those.
Don't be afraid if your #App can't tick all the boxes at first release. Rather feel free to slowly ibtegrate them.
Needless to say I do sincerely wish you good luck and only the best in terms of success.