This repository is my personal documentation of my journey of learning, best practices and conventions
Started from a small town called Imphal in the North-Eastern part of India, Where getting a public job is the only goal & safest way to live a life, Defying everything to pursue my passion and Choosing a Social Misfit career as a Computer Science Engineer To become a Software Engineer & A first-generation entrepreneur. I completed high school in my city and moved to Chandigarh to pursue my passion and degree As a computer science engineer.
Currently working as a software engineer in Banglore, India In a start-up that manages business Operations and Human resources globally.
“When you discover your mission, you will feel its demand. It will fill you with enthusiasm and a burning desire to get to work on it.” — W. Clement Stone
- Developers Roadmaps is a community effort to create roadmaps, guides and other educational content.- https://roadmap.sh/
- System Design Interview Roadmap and Resources - https://medium.com/coderbyte/system-design-interview-roadmap-and-resources-e22d702b44da
This is my personal software development process that i followed in most of the project that i work with.
- Pascal Case (PascalCase) - FILE NAME
- Camel Case (camelCase) - REPOSITORY NAME/FILE NAME
- Snake Case (snake_case) - VARIABLE NAME
- Dash Case (dash-case) - CLASS NAME
- Go Thinkster - Real world Application Starter Kit & Examples - https://github.com/gothinkster
- Design Resources for developers - https://github.com/bradtraversy/design-resources-for-developers
LEARN
- Coding Interview University - https://github.com/jwasham/coding-interview-university
- Free-programming-books - https://github.com/EbookFoundation/free-programming-books
LOOK & FEEL
- Tinacious Design Theme
- Bracket Pair Colorizer
- Better Comments
- Emoji
- Material Icon Theme
UTILITY
- Psioniq File Header
- Code Spell Checker
- Error Lens
- GitLens
- Jira And Bitbucket
- Todo Tree
- Version Lens
TOOL
- Simple React Snippets
- Dart
- Flutter snippets
- Flutter
- Docker
- Fireship - https://www.youtube.com/c/Fireship
- Traversy Media - https://www.youtube.com/c/TraversyMedia
- FreeCodeCamp - https://www.youtube.com/c/Freecodecamp
- Programming with Mosh - https://www.youtube.com/c/programmingwithmosh
- Web Dev Simplified - https://www.youtube.com/c/WebDevSimplified
- Eli the Computer Guy - https://www.youtube.com/c/Elithecomputerguypage
- Scott Hanselman - https://www.youtube.com/c/shanselman
- Coding Train - https://www.youtube.com/c/TheCodingTrain
- LevelUpTuts - https://www.youtube.com/c/LevelUpTuts
- Tania Rascia - Full StackDeveloper - https://www.taniarascia.com/
- Agile Software Development - Agile is an iterative approach to project management and software development that helps teams deliver value to their customers faster and with fewer headaches. Instead of betting everything on a "big bang" launch, an agile team delivers work in small, but consumable, increments.
My Own curated way of Documenting a software product
- INFORMATION GATHERING
- REQUIREMENT ANALYSIS
- WORKFLOW
- LIFE CYCLE
- ARCHITECTURE
- DATA MODELS
- UI FLOW
- API
- STATES
- Git is easy to learn and has a tiny footprint with lightning fast performance. It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features like cheap local branching, convenient staging areas, and multiple workflows. - https://git-scm.com/
git config --global user.name "Your Name"
git config --global user.email "youremail@yourdomain.com"
Once done, you can confirm that the information is set by running:
git config --list
GRADIENTS FINDER
- UIGradients- https://uigradients.com/#Maldives
ICONS
- Icons- https://icon-icons.com
- Logo Design - https://smashinglogo.com/en/
- Iconscout - https://iconscout.com/
- Open source icons - https://remixicon.com/
- Icons and Photos For Everything - https://thenounproject.com/
ILLUSTRATION
- Undraw Open source Illustration - https://undraw.co
- Story set - https://storyset.com/
- Icons8 - https://icons8.com/illustrations
- Designs.AI - https://designs.ai/graphicmaker
- DrawKit - https://www.drawkit.io/free
- Free illustratious - https://freeillustrations.xyz/
- Free Web illustrations - https://freewebillustrations.com/
- Free Illustration - https://lukaszadam.com/illustrations
- Vecteezy - https://www.vecteezy.com/free-vector/vector-illustration
- Humaaans - https://www.humaaans.com/
- Freebie Supply - https://freebiesupply.com/free-vector/
- Absurd Illustratioin - https://absurd.design/
- Outlane - https://outlane.co/now/freebie-vector-potions-illustrations/
TEMPLATES
- Bootstraps Templates - https://startbootstrap.com/
DESIGN RESOURCES
- Interfacer - https://interfacer.xyz/
An application programming interface is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build or use such a connection or interface is called an API specification.
An SDK is just a pre-packaged set of code (for a specific language) that you don’t have to write yourself.Sometimes free and sometimes you have to, purchase them.There are all sorts of other SDKs out there including things like an SDK to simplify building a User Interface.
The downside of the SDK is its size. It has many functionalities that one app might not use, also as SDK should be consistent over time, it should have the older versions which make them even larger over time.
Also, as they run on our thread, they could have security issues, as well as malware. It is better to make a good document for API vs an SDK. But big companies like to create SDK to obscure data from developers. So never use an SDK unless it is open source.
A framework is a skeleton where the application defines the "meat" of the operation by filling out the skeleton. The skeleton still has code to link up the parts but the most important work is done by the application.
A framework inverts the control of the program. It tells the developer what they need.
Examples of frameworks: Web application system, Plug-in manager, GUI system. The framework defines the concept but the application defines the fundamental functionality that end-users care about.
A library performs specific, well-defined operations.
Examples of libraries: Network protocols, compression, image manipulation, string utilities, regular expression evaluation, math. Operations are self-contained.
1. Relational Database : RDBMS stands for Relational Database Management Systems. It is most popular database. In it, data is store in the form of row that is in the form of tuple. It contain numbers of table and data can be easily accessed because data is store in the table. This Model was proposed by E.F. Codd.
2. Non Relational (NoSQL) : NoSQL Database stands for a non-SQL database. NoSQL database doesn’t use table to store the data like relational database. It is used for storing and fetching the data in database and generally used to store the large amount of data. It supports query language and provides better performance.
Relational Database | NoSQL |
---|---|
It is used to handle data coming in low velocity. | It is used to handle data coming in high velocity. |
It gives only read scalability. | It gives both read and write scalability. |
It manages structured data. | It manages all type of data. |
Data arrives from one or few locations. | Data arrives from many locations. |
It supports complex transactions. | It supports simple transactions. |
It has single point of failure. | No single point of failure. |
It handles data in less volume. | It handles data in high volume. |
Transactions written in one location. | Transactions written in many locations. |
Deployed in vertical fashion. | Deployed in Horizontal fashion. |
Microservices - also known as the microservice architecture - is an architectural style that structures an application as a collection of services that are
- Highly maintainable and testable. Loosely coupled. Independently deployable. Organized around business capabilities. Owned by a small team. The microservice architecture enables the rapid, frequent and reliable delivery of large, complex applications. It also enables an organization to evolve its technology stack.
The Entity-Attribute-Value (EAV) model is a data modeling approach used to represent complex and dynamic data structures. In this model, data is organized into three components: entities, attributes, and values.
- Entities: These are objects or concepts that are being described in the model. Examples of entities could be customers, products, orders, or any other object of interest.
- Attributes: These are characteristics or properties of the entities being described. Examples of attributes for a customer entity could be name, address, or email address.
- Values: These are the specific values associated with each attribute for each entity. For example, for the customer entity, the name attribute may have the value "John Smith," while the address attribute may have the value "123 Main Street." The EAV model is useful in situations where there is a need for flexibility in data modeling, such as when dealing with data that has many optional attributes, or when the attributes of an entity can change frequently. However, it can also lead to complex queries and difficulty in maintaining data integrity. Therefore, it should be used judiciously and with careful consideration of the trade-offs involved.
Here's an example of how an EAV model could be represented in a table format.
Let's say we have a simple online store that sells books, and we want to store information about each book in our database. In a traditional database design, we would create a table with columns for each attribute of the book, such as title, author, publisher, ISBN, etc. However, in an EAV model, we would create three tables: one for entities, one for attributes, and one for values.
Here are the tables we would create:
Entity Table:
entity_id | entity_type |
---|---|
1 | Book |
2 | Book |
Attribute Table :
attribute_id | attribute_name |
---|---|
1 | Title |
2 | Author |
3 | Publisher |
4 | ISBN |
Enitity Table:
entity_id | attribute_id | value |
---|---|---|
1 | 1 | Harry Potter and the Philosopher's Stone |
1 | 2 | J.K. Rowling |
1 | 3 | Bloomsbury Publishing |
1 | 4 | 0747532699 |
2 | 1 | The Catcher in the Rye |
2 | 2 | J.D. Salinger |
2 | 3 | Little, Brown and Company |
2 | 4 | 0316769487 |
In this example, the Entity Table contains two rows representing two different books, each with a unique entity_id. The Attribute Table lists the different attributes we want to store for each book, such as title, author, publisher, and ISBN, each with a unique attribute_id. The Value Table contains rows for each combination of entity_id and attribute_id, along with the value associated with that combination.
For instance, the first row in the Value Table tells us that for the book with entity_id 1, the title attribute has the value "Harry Potter and the Philosopher's Stone", the author attribute has the value "J.K. Rowling", the publisher attribute has the value "Bloomsbury Publishing", and the ISBN attribute has the value "0747532699". Similarly, the second row in the Value Table tells us that for the book with entity_id 2, the title attribute has the value "The Catcher in the Rye", the author attribute has the value "J.D. Salinger", the publisher attribute has the value "Little, Brown and Company", and the ISBN attribute has the value "0316769487".
COUNTER 23 M
- 1 Day
- 2 Day
- 3 Day
- 4 Day
- 5 Day
- 6 Day
- 8 Day
- 9 Day
- 10 Day - 1
- 11 Day - 2
- 12 Day - 3
- 13 Day - 4
- 14 Day - 5
- 15 Day - 6
- 16 Day - 7
- 17 Day - 8
- 18 Day - 9
- 19 Day - 10
- 20 Day - 11
- 21 Day - 12
- 22 Day - 13
- 23 Day - 14
- 26 Day - 17
- 27 Day - 18
- 28 Day - 19
- 29 Day - 20
- 30 Day - 21
- 31 Day - 22