We use NestJS/CQRS in our property management app. Here's how we implement it:
1. There are 2 event handlers for "writes". One handler writes normalized data in a PostgreSQL DB. The other handler writes denormalized data into Firestore.
2. Our frontend uses Firestore so mutations are reflected realtime in the frontend. We never found a need for the command to return data. There is also no need for complex queries in Firestore since our data is denormalized and optimized for reads.
3. The PostgreSQL DB is useful for reporting and complex queries. Our frontend app displays this data only in the reports area.
So far, I don't see how things can get confusing with this pattern.
I became a freelancer shortly after graduating college. Though sites like Elance/Odesk/Freelancer.com(GetAFreelancer back then) provided me a platform to start with, it didn't take long before the cutthroat prices made it unsustainable.
The answer, which has been mentioned already by other commenters, is network. You need a great network and a great reputation. The real question is how do you build a great network? And how do you build a great reputation? As an introvert geek with only a drop of marketing prowess in my DNA, I struggled about the same questions.
One way I built my network is through Open Source Communities. Joomla! was just forked out of Mambo back then and there was an opportunity to participate in the then small community. So I joined the community, made friends with the right people, and I made a living out of building Joomla! Extensions. I also participated in other OS communities like Django, Kohana, and many others. The more I participated, the more my connection and reputation grows. The flow of projects from the connections I got from those communities allowed me to survive, and also thrive, which enabled be to build my own web development company (https://www.wizmedia.net).
I think that marketplace sites like oDesk/Elance/99designs/TaskRabbit etc are horrible place to be in for creative people particularly programmers and designers. I've been looking for alternative places to go to but didn't find any that is fair for both Clients and Freelancers. So it became an idea for my Startup that I'm building right now. That is Creatizens - http://www.creatizens.com. It's still under development, but you can read more about it here https://angel.co/creatizens. The idea is based on the fact that the most profitable freelancers get their projects from their professional network - mostly from colleagues who has overflow projects, or ex-coworker whose company needs contractors. I don't want to talk too much about it since I'm bordering on spammy so I leave it at that.
I like everything except the circles and how I had to drag drop before I can create a task. Droptask should also make a card wall layout and make the circles optional. The circles layout is too polarizing an interface to be the "muse".
We're also about to re-launch our website and we have very similar service offerings. Reading the critiques and praises here is helpful for us also :).
1. There are 2 event handlers for "writes". One handler writes normalized data in a PostgreSQL DB. The other handler writes denormalized data into Firestore. 2. Our frontend uses Firestore so mutations are reflected realtime in the frontend. We never found a need for the command to return data. There is also no need for complex queries in Firestore since our data is denormalized and optimized for reads. 3. The PostgreSQL DB is useful for reporting and complex queries. Our frontend app displays this data only in the reports area.
So far, I don't see how things can get confusing with this pattern.