2. Project management

Buidling a personal website and work through git

Creating a website through website builders.

As a start, I looked online for the best website builders and according to my research, I found the top 1 one website builder that many people recommended is Wix and the second one was wordpress and third was Weebly.

Thus, I have registered in Wix and created the website. It is an easy tool to be used and flexible and simple. There is no complication on the process. The website will ask you multiple questions and then will create your website automatically.

you can check out here

After that, I found out that I can’t import my website to my repo according to wix help

Thus, I have decided to explore gitlab.

Exploring Git

it was difficult for me to understand what is git lab basically. So I have tried to figure out by watching videos youtube and multiple documantiation.

Git was created by Linus Torvads he is the same guy who invented Linux Kernel

The reason behind why he created anothor technology called git is as you may know linux kernel is an open soure where everyone can contribute so if you are living in anywhere in the world, you can contribute to linux kernel as you can download a copy of linux kernel, add your own features and submit it there. however, they will not accept your request be defualt but you have to provide some new features. what I am trying to say is you can be a contributor to linux kernel.

So in this world, there are millions of programmers and if everyone is trying to work on one software how can they manage it? is it easy to manage? It is not, It is extremely difficult. even if they are 5 people working on a project, it will be difficult to manage that project.

So Linus Torvads came with a concept called git. it handles all such things of merging of different source code of different people and maintaining versions. So those things are provided by git

How git works

git is a distributed version control system. heavy words right? so lets try to understand those words first. there is a concept called SCM which means Software Configuration Management or Source Code Management. to understand what this means lets say you are working on a project and at some point you will need to right some code especially when you get a requiremnet from someone, you dont get the exact requirment, what you get is a high level requirments and you will try to make a product which is called as a minimum value a product MVP. and this product will not have all the features but as it works you will feel it is okay as you got your first working softwares. After somedays you may want to add some features so you will make changes on the same project and adding new features. after that, you may realize this new features are not working properly. In this case, what will you do? you may want to remove all the features. So from the first product you have added some new features and now you have removed the features. and after some times, you may feel that you want to return back the features you have deleted. So in this case, you will again write the same code right? but luckly if you have a backup as normally we use dropbox as a backup so you may go to dropbox and copy that code and you will push it again. But dont you think like you are doing lots of work. lets say you are done with that after other days, you have added and removed some more features and after doing all those things, you realized the last version was better. So, normally, to maintain all this version system there is a concept of a version control. so lets say when you released your first product that will be a snapshot version, after some time you thought, okay this the final version which you are going for so that will be 1.0 and then after some time you will be saying 1.1, 1.2, 1.3 … etc. and lets say now you are working on 2.0 and if you want the older project which is 1.2, is it possible? what we normally do is we may create multiple folders in dropbox or drive which will have the backup of your project. So you may name the folders like this myproject1.1, my projec1.2 .... etc just imagine you have to handle all these projects and you have to remember each features of each project. why you have to manage all those things? Git is a powerful tool on the system which will do it for you and that is the version control system. Distributed version control system means? lets say you are traveling to somewhere where you may have no internet connection how can you get your repository? but this is a new term right? repository is a place where you have all your codes. so if there is no interenet is the issue and there is a single point of failure. however, if the system is disributed, thats fine because you will have a local copy and you can recall your local copy to the server so next time if your server fails. to clarify, every machine or every developer has their own copies so this is callled as disributed as we are distributing the repository so every machine will have their own local repository. so if you are in a flight, thats fine, you can work on your project and create different versions in your local repository and when you catch an internet conncetion just push it on the server and that is awesome right?

Reading the the following page helped me to understand how git works and how to work using git.

bash commands

  1. ls > for listing all of the major directories filed under a given file system
  2. cd > for changing directory
  3. pwd
  4. mv > allows a user to move a file to another folder or directory.
  5. makdir > make directory - command allows the user to make a new directory.
  6. rm > allows the user to remove directory
  7. clear> allows the user to clear the screen
  8. cat> to read what is inside a file
  9. cp > to copy files
  10. vi > to edit files
  11. pwd > to know the name of the directory you are in

Git commands

  • first, I have downloaded Git bash

  • Second, I have set up my identity by creating a global username by the following command

git config - -global user.name “ZainabARahman”

  • Third, I have added my email by the following command:

git config - -global user.email.”zainabarahman423@gmail.com”

  • Forth,I have generated my ssh-key by the following command:

ssh-keygen -t rsa -c “Zainabarahman423@gmail.com” -b 4096

then it was copied using the following command

then on gitlab website I have pasted the key

  • Fifth, I have cloned my repository by this command

https://gitlab.fabcloud.org/academany/fabacademy/2019/labs/bahrain/students/zainab-ali.git

it didnt work because it turned out that I have to remove the https://

Note, the following command will be used every time for adding and new features

  • Sixth, I have used the command git pull to make sure I have the updated version of my repository.

  • Seventh, I have added some features.

used the following command for editing the index file using the notepad

I made some changes then I checked my work using the following command

  • Eightth, I have checked the status by this command:

git status

  • Ninth, I have used this command to add all the features:

git add –all

  • Tenth, I have used this command to commit

git commit -m “about mees”

  • Eleventh, I have pushed my repository by:

git push

the following image shows some of git commands and their uses. they were found by using the command git

Website development tools

Referring to [this page] (https://squidfunk.github.io/mkdocs-material/getting-started/#color-palette)

I have seen some of the configuration that I can make in the website and thus I have decided to change the primary color into lime

and this was done by opening the file mkdocs.yml and changing the colors as the following