Beginner Question - How to build an app that allows users to message each other?

Hi,

I am completely new to web development, but I really want to start learning by doing my own projects. I went through Django’s introductory materials, and would like to build a basic app that allows users to message each other, with a delay in receving messages (like reciving a mail in real life). Can anyone help me where I should start? Much appreciated!

That’s a very broad topic, but if you want to treat this as a learning experience, I would start small and keep it intentionally basic until you get the hang of things.

To keep this simple, I’d start with a Django project that supports all the auth flows you need to let users register, log in, reset passwords, manage profiles, etc. Look at the Learn Django site (https://learndjango.com/) to find examples of these.

Once you’ve done that, you could start with a “messaging” app and then come up with a basic model, which would have fields for the sender, receiver, date, status, content. Don’t over-think it at this stage, just get something up and running. Then you need a view to send a message, and a view to show the messages you’ve received.

One of the first challenges I can think of is to think about how to send a message to another user - are you sending it to their username, and can anybody send a message to any other user? How do you discover the usernames of other users? You can keep it basic for now and just assume that users know the username of the person they’re sending a message to.

And how do people know that they have received a message - do they get an email, or do they have to refresh their message list to check? Again, keep it basic and just let users manually refresh the message list to look for new messages. But there’s lots of scope to improve this as you learn more.

Nothing I’ve said above would be considered production-ready, but there’s enough there that you could spin up a demo as a learning experience. Good luck!

1 Like

Thank you so much for your help! I know where to start now.