I really want to scratch an itch that I've had for about a decade, and build a nice, simple, modern-looking web client that's usable as a mobile app to desktop, packaged however it takes.

My primary use case here is an app that my mum can use to send me photos of her cat.

I have Strong Opinions about how it'd work but I lack experience in modern web dev. I need a mentor or small group who can help me get the basic framework in place to build from. Anyone want to chat about this?

My primary target for the app itself is anyone with a small server, who just wants a solid web interface to present to it, easily customisable with their colour theme, logo etc, which makes use of their server by non-technical people as easy as possible.

It should make things as easy as possible for someone to set up a chat server for their friends, and point at a URL and go "here it is".

And if anyone's got advanced needs and wants to use other clients, of course they still can.

@dadegroot @kemonine I know XMPP pretty well, I've been running servers almost as long as they've existed, but I have no background in web dev really at all. I've deployed everything under the sun, but god damn it's hard finding a starting point to get into modern frameworks if you missed the last decade or so.

@dadegroot @mike agreed.... I gave up and stick to systems integration 😉

I followed up in a separate post with a suggestion on a possible starting point
@dadegroot @mike I've got prosody and converse.js deployed.

ID recommend giving converse.js a look (the Dev is on the fediverse) and seeing if that may be a good starting point.

@kemonine I've looked at Converse a lot, indeed. I tried to get a handle on whether it could be adapted, and it still comes across as overcomplicated for what I want.

No disrespect to the Converse project, BTW, I have it deployed in several places already and it does a good job, but not the one I'm looking at.

Movim is close, it looks great and is quite usable, but its architecture is a bit weird, and is more concerned with being a social network than a chat client.

@mike so it's just a client, or it's bundled up with an xmpp chat server backend as well? You wouldn't need to also write that part yourself, right?

@joshsharp just a client, but targeted tightly to a very specific set of server capabilities. That's the main point, not being a generic client that needs to cope with a variety of possible configurations.

I don't see it as being specific to Prosody or ejabberd for example, but requiring a configuration that's fairly modern so as to not require a bunch of config options for various circumstances.

@mike ah sure. I don't have any experience with xmpp, I'm sorry, was just curious as to the scope.

@joshsharp my issue is that I've got plenty of XMPP experience but no web development. 😀


As someone who's been working for years on pretty much exactly what you're talking about, I think you might be severely, underestimating how much work this really is.

Especially if you don't have much experience with modern web dev.

Why not get involved with an existing project?

If you don't like the Converse.js UI/UX and want something different, you can still use it in "headless" mode and build your own UI on top of it.

@jcbrand believe me, I'm thinking very hard about the amount of work involved.

Whether to use an existing base like Converse or another project as a base is something I'd love to get into a long discussion about, with the particular UX goals I have in mind and how to get there.

This would be a massive learning project for me, and my biggest initial hurdle is figuring out what exactly I need to learn - what could meet the goals I have?


> my biggest initial hurdle is figuring out what exactly I need to learn - what could meet the goals I have?

Difficult question to answer, but if a simply, easy to use UI/UX is most important to you, then I would start with designing that.

Start by creating a static HTML/CSS mockup of the UI that you want. Potentially using something like Bootstrap or Semantic UI.

Here's an example of a static mockup for Converse:


Then learn Vue.js or React and figure out how to break the UI down into components.

Then, include converse/headless via NPM and call its API to log in, start a chat session, send/receive messages etc.


An alternative approach, is to see how the current Converse.js UI could be simplified and changed to your needs and make the necessary changes there.

That's probably less work.

@jcbrand it's exactly this "learn Vue or React" part I'm looking to chat about. I'd like to get some experienced input into pros and cons of various platforms for tasks like this and help me with dumb questions and full in some gaps.

It's not like I'm coming from having never done any programming at all. I'm looking to discuss the goals and narrow down the truly staggering amount of possible tools.


I can't say much about Vue.js versus React. I'm not using either for Converse.js :)

That's mostly because I'd rather add new features than spend my time rewriting on top of a newer framework.

From my own research, I'm a bit more partial to React and I think there's a decent chance that Converse.js's views will eventually be rewritten in React.

@jcbrand I'm leaning towards learning React as it's so common, but I think the Facebook connection is irrationally putting me off.

@jcbrand heh, I was fishing around for existing XMPP/React projects and look whose name popped up:

@mike You should start on an existing client, and either improve it, or make a customized version the way you want, it's a **lot** of work to start from scratch. Have a look at converse.js or JSXC for instance.

I'm working myself on a client (Salut à Toi) with a web framework included, which is exactly for creating really specific UI in a relatively simple way (all in #python), you may want to have a look at it too.

Sign in to participate in the conversation
Chinwag Social

Consider this a friendly, local pub. Make yourself at home, bring your friends, have a good time! Meet new people, have a laugh, enjoy the ambience, and the Oxford commas.