Giter Club home page Giter Club logo

cuiff's Introduction

Only you know who you can set out to be โ€” Never let anyone tell you otherwise.

My name is Malik, I was born in Lisbon and moved to Berlin where I work in product enablement (what the industry calls Product Manager). In my free time, you can find me building apps, projects, events and communities that foster connection, enable education and create more access to opportunities.

Right Now, I'm:

  • ๐ŸŒ Working on my capstone project and thesis at CODE University, exploring computer networks, distributed systems, blockchain and decentralisation. I want to build something that makes the web better and that could have been created at Mozilla or Cloudflare.
  • ๐ŸŒฑ Building and maintaining Logicola, an e-learning app, originally created by the late Harry Gensler, so more students can learn formal logic and improve their reasoning.
  • โœจ Looking to learn with more seasoned technical PMs and to collaborate in projects that improve the infrustructure of the internet. If you're stumbling upon my profile and feel like grabbing a digital coffee would be energising, please reach out:

cuiff's People

Contributors

malikpiara avatar

Stargazers

 avatar

Watchers

 avatar  avatar

cuiff's Issues

Feedback

Hey Malik, here's some feedback! Hope it helps :)

Frontend

  • Empty messages shouldn't be possible. (Block them both in Frontend and Backend)
  • The input box should have a fixed width.
  • "standup" and "Recent" & "Calendar" should be vertically centered, e.g. with align-items: center;
  • CSS looks fine, although it's not very scalable. You might look into the following:

Backend

I can't say too much about the python code unfortunately, because I haven't worked in Python too much. But here's what I can say:

  • You should rate-limit the requests. Would be easy to spam your backend with requests right now.
  • Make sure to encrypt any passwords in the database, use "sugared cryptographically-safe hash functions" for that. (Just google it lol) -- If someone stole your DB, it would be impossible to crack the passwords then.
  • Try to split the app.py into multiple modules, extract functions wherever it makes sense. (Anything that's repeated at least once, or benefits from better naming)

General

These specific suggestions might give you some idea on what to improve, but if I would go on with every tiny detail, it'd take forever. So in general:

  • Follow the "Clean Code" advice, especially:
    • DRY: Don't repeat yourself.
    • Try to write code that explains itself. A well-named function is better than a well-written comment.
  • Look into automated testing! I'm sure there's good tooling for Python.
    • This is a bit advanced maybe, but it's crucial for stable applications. Try to stick to TDD (test-driven-development) as soon as possible.
    • You'll have to learn to write "testable" code. A few keywords to research here: "Mocks", "Stubs", "Fakes" (those are all similar), "Dependency Injection"... The goal is to be able to switch out real libraries (like flask) with your own testing dummies. Then you can use them to verify that your code behaves as it should.
    • Automated testing & clean code complement each other. Although both can be very difficult, if you start early, they will save you a lot of trouble.

I liked your general architecture. There's not too many files in each folder, it's clear what each module does. Try to stick to that, when the app grows. Make sure to extract functionality into separate modules wherever possible to avoid messy code.

The two concerns that I'd have before launching this tool publicly are 1. Security and 2. Testing.

  1. For Security, read into the OWASP principles.
  2. For Testing, stick to my earlier advice. Use any python testing framework.

I know this might all be a bit overwhelming, but I hope it helps anyway. Consider this a roadmap to becoming an "Advanced Developer", or at least one who can be confident in their production code! ๐Ÿ˜„

Thoughts on the current state of the app

Here's some quick thoughts on things I need to work on for releasing version 1.0:

  • There's no landing page which means there's no way for people to know what the product is all about.
  • Users cannot recover their password which means they'll have to create a new account or stop using the product.
  • The invite code hasn't been properly implemented. Which means I can't onboard new users.
  • When people sign up, they are redirected to the login page but there are no visual cues or aids telling them they can already login.
  • The email notification people receive when they sign up for Cuiff does not provide any call to action and is still being sent with Fuzzboard name and my gmail which will confuse new users.
  • When people login for the first time, the next steps might be confusing. There's not a lot of visual cues or explanation about what you can do at Cuiff.
  • There's also no explanation about the difference between personal boards and workspaces.
  • When you're inside a board, there's no way to know where you are. You might be inside a workspace or personal area, who knows?
  • There's no way to delete workspaces, change their names or see who's part of it.
  • There's no way to delete boards or change the prompt.
  • The keyboard shortcut is malfunctioning and that affects the user experience.
  • I'm not handling 404 errors which results in a bad user experience.

SignUp and Login form off center

The Sign up and Login form is off center for me.
I have not done a lot of testing but This happens on both my screens: aspect ratio: 16:9 and 14:9

Strong password validation

A user can set a very weak password as their account password (examples: "1", "123", "password")

I suggest validation including (but not limited to):

  • at least 8 letters
  • capital and non capital letters
  • at least one numbers
  • at least one special character (".","/"."?")

Rate limit

This needs to be discussed:

Rate limit for creating posts (or boards) to prevent spam creating

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.