WHO THE HELL IS LUCINDA?

August 29, 2019

Lucinda is a lazy black fluffy girl. Her name was generated by random name generator and I’m not joking now.

Lucinda looks somewhat like this:

cat

Yes - she is a cat. Okay, let’s be a little more serious now. Lucinda is a name of my new personal project. Its name was really generated by random name generator and the project mascot is a cat because I just love cats - I think they are cute, fluffy and lazy - also bitches. When they are not in their mood you can’t do much with them. They come to you only when their stomach is empty.

Why I started and why am I writing about it

I’ve got a ton of personal projects. They are abandoned, buggy, sleeping somewhere in a remote git repository. They didn’t get my full attention and as the time flew my attention converged to zero. All the abandoned projects were at least good for one thing - I learned new things with them, I tried new technologies, libraries, new architectural approaches, new languages.

I have realized that I have a lot of technical skills but I have no real examples for eventual employer to prove that I really know what I say I know. One thing I really don’t want - or better say - what I really want to learn, is to NOT abandon a project. I want to learn at least have things done as being planned. When I write about it, I think it could give me some additional motivation for doing it - that some person reading it still expect some progress in the future. Even better motivation than someone seeing a progress is when someone has real experience with thing I’ve made - and if it’s positive experience, the motivation then is even bigger.

So what I’m gonna do

So I picked a project management software. I’ve seen some of them and I think I could do better. Why not. Worst case scenario is that I lose time and don’t learn anything - which is not common when doing software (Making software is about solving problems. It is expected that I learn something). I expect to learn at least something.

Stack, or what I’m gonna use

  • Frontend

    • React
    • CSS/Sass
    • Redux
  • Backend

    • Typescript / Node.js
    • Dynamo-DB
    • AWS Lambda
    • OAuth
    • GraphQL
  • Modeling

    • Use case diagrams
    • Sequential diagrams

Use Case Diagram

Use case diagram is a diagram showing what users can possible do in your app. You can map different users and map all things (Use cases) they can possibly do. Use Case diagram should also contain include and exclude connections between UCs but for sake of simplicity I decided to not include these types of things and keep everything as simple as it possibly could be.

use case diagram

It’s a good practice to name your use cases like UC0001: {Short name}, UC0002: {Short name}. Number at the beginning is then used as fast identificator for other related diagrams and so on.

I named CRUD for Create Read Update Delete - It keeps diagram smaller and in the future I can make UC like UC0012.1, UC0012.2 or finally use another include and exclude use case and connect it with parent CRUD use case. For now, I don’t want to be UC too packed.

When I can see next progress ?

For now, I have everything configured. AWS lambda, dynamodb, backend with a few endpoints implemented and frontend has a few pages implemented. I designed landing pages and main app workspace in Figma.

Currently I’m solving interface typing between graphql server-side controller and aws DynamoDB. I want type safety between database and server (serverless lambda).

I see problems at:

  • Drag and drop tasks from panel, I’ve never worked with that. I’m going to probably use react-dnd.
  • Still have thought about optimizing db lookup with with saving some information to JWT token (information about permissions to projects - where user have permission. If this information is presented, I could possibly omit db checking if user is really in that project and so on. Then there is that problem with removing user from the project. What then? DB lookup for project permissions is going to happen when refresh endpoint is called - for issuing new access token. But when an user is removed from an project, I need wait ~60 mins when user really lost his permission to work with the project (by issuing new access token)) - But I’ll figure it out later

Join the Newsletter

Name
E-Mail