DEV Community

Cover image for React, Reactive Microservices, Kubernetes, GraphQL & gRPC - Announcing Appwish - Fullstack Tutorial Series & Opensource Project
Patryk Jeziorowski
Patryk Jeziorowski

Posted on • Edited on • Originally published at talkoverflow.com

React, Reactive Microservices, Kubernetes, GraphQL & gRPC - Announcing Appwish - Fullstack Tutorial Series & Opensource Project

Hello everyone!

In the next few days, I'll start publishing posts on building Appwish - a platform where people can express their app wishes (e.g. "I wish I had an app for X and Y") and vote up other people's great ideas.

Developers can use Appwish to keep track of the most wanted apps and features. They can assign themselves to projects, create dev teams and collaborate to fulfil people's needs.

In the future, the platform could also introduce elements of fund-raising or voluntary donations for the most appreciated developers and teams.

In the project and tutorials I'll use all of the following concepts and technologies (& more)

  • React.js - for building modern web UI
  • GraphQL - for data exchange between UI and backend microservices
  • gRPC - for backend inter-service communication
  • Docker - for packaging applications
  • Docker Compose - for setting up local development environment
  • Vert.x - for creating high-performance, reactive microservices
  • Kubernetes - for container orchestration
  • Real-Time Data Streaming via gRPC & GraphQL
  • Microservices architecture

If the project goes well, there's even more stuff in plans:

  • Istio - additional layer on top of Kubernetes for managing service-to-service communications between microservices
  • Many of the Cloud Native Computing Foundation projects like
    • Jaeger - for distributed tracing
    • Prometheus - for system monitoring
  • React Native - for iOS & Android client (or other mobile native framework, contributions are welcome!)

The Goal

The goal of this project is to create a real-life application/platform using top trending technologies & describe all the steps in educational tutorial series. If the project goes well, it may be released someday!

Contributions are welcome!

After I set up the initial project skeleton I'd appreciate any contributions from people who would like to collaborate in app development and/or learn hands-on.

Frontend, Backend, DevOps - doesn't matter - you'll find your place here. There's lots to do!

Final Words

If you like (or don't) the idea - share your thoughts and let me know in the comments or on social media - I'd really appreciate it! You can also let me know if you'd prefer the tutorial in the form of blog posts or videos :) Thank you for reading!

EDIT:
Now you can also join us on Slack to learn more about the project - https://join.slack.com/t/appwish/shared_invite/enQtODk2NjE1ODkyMjMwLTU4NTNhYzBmYmI0MzNiNmJjNDU4MzRkNjI4ZTc4NWZmMzMyMTZmNWFjNDAzNTIwMDYzY2U5YWVhMTRkZGIyNmI

Top comments (95)

Collapse
 
pjeziorowski profile image
Patryk Jeziorowski

BTW. I see lots of Node.js developers interested in contributing - do you guys prefer sticking with Node or you want to learn something new?

For the first two microservices, I used Vert.x - it's a framework for building reactive applications on the JVM.

At its core, it's very similar to Node - it's event-based and uses event loop to process events. However, as it uses JVM languages(Java, Kotlin, Scala...), it's not limited to a single thread as Node - it uses "Multi-Reactor" pattern, where multiple event loops can process events parallelly (the optimal number of loops is based on CPU core number) vertx.io/docs/vertx-core/java/#_re...

As we use microservices, theoretically we could write other services using Node. But nothing is free - adding new languages to the stack comes with some costs.

So, would you like to try Vert.x or rather put some Node microservices to the game?

Collapse
 
uminer profile image
Moshe Uminer • Edited

I can't say that I'm familiar with NodeJS, but I am certainly familiar with javascript. For me, however, I would prefer Vert.x, as I am interested in learning more about the JVM languages / ecosystem.

(disclaimer: while I hope to contribute, I don't know that I will, so I don't know how much my opinion should matter)

Collapse
 
rricardocoder profile image
Ricardo el coder

I love Nodejs. But I have a short experience in JAVA. I would like to keep learning more of java. For me it's not a problem learn something new.

Collapse
 
pjeziorowski profile image
Patryk Jeziorowski

Great to hear that :)

Collapse
 
ahwinemman profile image
Ahwin Oghenerukevwe

Hello Patryk,my core Stack is React / Java but I don't working with any language so I wouldn't mind a polyglot environment. Here's my github id: ahwinemman 😉

Collapse
 
pjeziorowski profile image
Patryk Jeziorowski

I've sent you invite on . Github - feel free to join Slack: join.slack.com/t/appwish/shared_in...

Collapse
 
navicsteinr profile image
Navicstein Rotciv

We choose node

Collapse
 
danias profile image
Vasilis Danias

How come you didn't go with Go lang and went for Vert.x instead?

Collapse
 
ashutosh049 profile image
ashutosh049 • Edited

Hey @pjeziorowski , excited for your App, I'm more of a Java/Microservice guy and would love to contribute in same. I would love to learn Node and Vert.x

Add me as a contributor , my GitHub id is @ashutosh049

Collapse
 
pjeziorowski profile image
Patryk Jeziorowski

Great. We need Java microservice guys if we go with Vert.x :D

Collapse
 
percyvega profile image
Percy Vega

Perfect. That's what I do at work. Count me in.

Collapse
 
ad0791 profile image
Alexandro Disla

I will learn a lot for sure

Collapse
 
parables profile image
Parables

I have to get my hands dirty this year. I have been reading documentation and watching tutorials since 2017 without putting them into practice.

I would be grateful if you could add me as a contributor to this awesome project. Working alongside experts would inspire me a lot and I am sure I will learn more from this project.

GitHub:
github.com/Parables
Email: parables95@gmail.com

Collapse
 
pjeziorowski profile image
Patryk Jeziorowski

I'll soon create an organization on GitHub with a task board.

After it's done I'll add you all guys as contributors if you're interested :)

Collapse
 
maxmorev profile image
Maxim Morev

Yeah. Intrested

Collapse
 
rv1448 profile image
Rahul Vangala

A slack channel would greatly help everyone to contribute and form groups to contribute module or necessary feature or idea.

Collapse
 
pjeziorowski profile image
Patryk Jeziorowski

Yeah, that's a GREAT idea. I had been thinking about this yesterday but didn't have enough time to create one. I'll share an invite link soon :)

Collapse
 
ahwinemman profile image
Ahwin Oghenerukevwe

I'm very interested.
Github: github.com/ahwinemman.
Email: ahwinrukevwe@gmail.com

Collapse
 
pjeziorowski profile image
Patryk Jeziorowski

As this comment section gets bigger and bigger it's getting hard to manage - I hope I haven't missed anyone :) If you haven't received the invitation to join project on Github, ping me on SLACK:

join.slack.com/t/appwish/shared_in...

This channel will be also used for talks about development, new features & ideas, so I kindly ask all people involved/interested in contributing to join :)

@rricardotj @ahwinemman @rv1448 @ashutosh049 @narutosanjiv @mfahad1 @ducminh @noelchanwh @krsanty @quangthanh0909 @mojjammil & all others

Collapse
 
rv1448 profile image
Rahul Vangala

Thanks Patryk for sharing slack channel.

Collapse
 
pjeziorowski profile image
Patryk Jeziorowski

Feel free to join! :)

Collapse
 
pmlopes profile image
Paulo Lopes

Hi @pjeziorowski , really good initiative, on the vert.x side, I can also add that vert.x is a polyglot framework, which means that you can use Java and also use JavaScript if you like.

I see that there is interest on JavaScript so if you want to showcase the polyglot aspect, please also look at reactiverse.io/es4x/ which is the successor of the current javascript binding.

Collapse
 
pjeziorowski profile image
Patryk Jeziorowski

This reactiverse.io/es4x/ looks dope :) I've never heard of somebody using Vert.x with JS extensively though

Collapse
 
marcus-sa profile image
Marcus S. Abildskov • Edited

You don't have to use Docker Compose as a local dev environment.
When deploying to Kubernetes, you might as well develop directly on it.
Several tools allow you to do this such as Skaffold, Garden & Okteto

Collapse
 
pjeziorowski profile image
Patryk Jeziorowski

I've heard about Skaffold before but never used it, I'll definitely give it a closer look.

Collapse
 
amanullachishty profile image
AMANULLA CHISHTY

looking forward to this.

Collapse
 
avelang profile image
Abey Velangadan

Damn cool stuff! I'm a decade old developer with a perpetual imposter syndrome! Time to get my hands dirty! This project is so exciting. Thanks for doing this! I'm definitely going to learn a lot and hopefully be contributing in a big way as well! Add me please

GitHub account: @avelang
Email address: abey[dot]velangadan[at]gmail[dot]com

Collapse
 
pjeziorowski profile image
Patryk Jeziorowski

Great! I'll add you soon - you can also join us on Slack :)