Home
Softono
Backend-Roadmap

Backend-Roadmap

Open source
112
Stars
14
Forks
0
Issues
1
Watchers
2 years
Last Commit

About Backend-Roadmap

The roadmap is made for anyone who wants to become a modern back-end developer, focusing on the world of REST and microservices architecture. It covers everything from basic stuff to advanced technology including publicly available sources, topic-related tasks, and projects to have an idea of the full cycle of developing the backend of modern projects.

Platforms

Web Self-hosted Docker

Links

Backend Roadmap

License: CC BY-SA 4.0

The roadmap is made for anyone who wants to become a modern back-end developer, focusing on the world of REST and microservice architecture. It covers everything from basic stuff to advanced technology including publicly available sources, topic-related tasks, and projects to have an idea of the full cycle of developing the backend of modern projects.

1.* Computer Science Foundation

Please visit Computer Science Foundation Roadmap to learn about those topics:

  • 1.1 Basics of CS(Computer Science)
  • 1.2 Introduction to Data Structures and Algorithms
  • 1.3 Introduction to OS(Operating System)
  • 1.4 Linux OS
  • 1.5 Terminal Commands
  • 1.6 Shell Scripting
  • 2.1 Git

3.1 HTML+CSS+JS

3.2 JS

* Project3

  • Create a simple X&O game using HTML and JS.
    Example:
    tic_tac_toe.gif

4.1 NodeJS

4.2 REST

  • Develop simple in-memory Blogpost CRUD REST APIs using NodeJS+Express.

4.3 Postman TOOL

* Project4

  • Create a simple blogpost website using NodeJS as a web server.

5.1 Golang

  • Sources

  • Practices

    • Task1: Swap 2 numbers. In this task, a user is asked to enter two numbers and the program will swap two numbers without using the third variable.
      
      package main

    import "fmt"

    func main() { var a, b int = 3, 4

      // fmt.Scanf("%d", &a)
      // fmt.Scanf("%d", &b)
      fmt.Printf("a = %d, b = %d\n", a, b)
      //
      // WRITE YOUR CODE HERE
      //
      fmt.Printf("a = %d, b = %d\n", a, b)

    }

    
      Example: 

    a = 3, b = 4 a = 4, b = 3

      - Task2: isOdd and isEven. Write go functions to check whether a number is even and is odd.
      ```go
      package main
    
      import "fmt"
    
      func main() {
          var a, b int = 3, 4
    
          // fmt.Scanf("%d", &a)
          // fmt.Scanf("%d", &b)
          fmt.Printf("a = %d, b = %d\n", a, b)
    
          // fmt.Println(a, "is odd: ", isOdd(a))
          // fmt.Println(b, "is even: ", isEven(b))
      }
    
      // func isEven(num int) bool {
      //  //
      //  // WRITE YOUR CODE HERE
      //  //
      // }
    
      // func isOdd(num int) bool {
      //  //
      //  // WRITE YOUR CODE HERE
      //  //
      // }

    Example:

      a = 3, b = 4
      3 is odd:  true
      4 is even:  true
    • Task3: Area of a circle inscribed in a square. Find the shaded region by given R(radius of the circle).
      Task 3 Image
      
      package main

    import ( "fmt" )

    func main() { var r float32 = 10.04

      // fmt.Scanf("%f", &r)
      fmt.Println("R =", r)
    
      fmt.Printf("Area: %0.2f\n", area(r))

    }

    func area(r float32) (area float32) { // // WRITE YOUR CODE HERE // return area }

    
      Example: 

    R = 10.04 Area: 86.53

    
      1. FizzBuzz
      ```go
      package main
    
      func main() {
          for i := 1; i <= 100; i++ {
              FizzBuzz()
          }
      }
    
      func FizzBuzz() {
          //
          // WRITE YOUR CODE HERE
          //
      }
    1. Find a weekday from a given date
      
      package main

    import ( "fmt" "time" )

    func main() { dobStr := "20.04.1998" // Replace this date with your birthday givenDate, err := time.Parse("02.01.2006", dobStr) if err != nil { panic(err) } fmt.Printf("%s is %s", givenDate.Format("02-01-2006"), FindWeekday(givenDate)) }

    func FindWeekday(date time.Time) (weekday string) { // // WRITE YOUR CODE HERE // return }

      3. Display numbers  from 1 to 100 in reverse order using DEFER
      ```go
      package main
    
      func main() {
          DisplayNumberInReverseOrderWithDefer()
      }
    
      func DisplayNumberInReverseOrderWithDefer() {
          for i := 0; i < 100; i++ {
              //
              // WRITE YOUR CODE HERE
              //
          }
      }
    1. Write a function to calculate square root. Given a positive number n and precision p, find the square root of the number up to p decimal places using binary search.
      
      package main

    import ( "fmt" )

    func main() { fmt.Println(MySquareRoot(10, 12)) }

    func MySquareRoot(num, precision uint) (result float64) { // DO NOT USE math.Sqrt!

      //
      // WRITE YOUR CODE HERE
      //
    
      return

    }

      5. Find the Minimum Number. Link: https://www.hackerrank.com/contests/w30/challenges/find-the-minimum-number/problem
      ```go
      package main
    
      func main() {
          n := 12
          // Read n from input
          DisplayMinimumNumberFunction(n)
      }
    
      // https://www.hackerrank.com/contests/w30/challenges/find-the-minimum-number
      func DisplayMinimumNumberFunction(n int) {
          //
          // WRITE YOUR CODE HERE
          //
      }

* Project5

  • Task1: Write a bigint package.
    • func NewInt(num string) (Bigint, error)
    • func (z *Bigint) Set(num string) error
    • func Add(a, b Bigint) Bigint
    • func Sub(a, b Bigint) Bigint
    • func Multiply(a, b Bigint) Bigint
    • func Mod(a, b Bigint) Bigint
    • func (x *Bigint) Abs() Bigint
      Example:
      a, err :=bigint.NewInt("988847123412385995937737458959")
      if err != nil {
        panic(err)
      }
      b, err :=bigint.NewInt("21231231231231231231231231233")
      if err != nil {
        panic(err)
      }
      err = b.Set("1") // b = "1"
      if err != nil {
        panic(err)
      }
      c:=bigint.Add(a, b) // c = "988847123412385995937737458960"
      d:=bigint.Sub(a, b) // d = "988847123412385995937737458958"
      e:=bigint.Multiply(a, b) // e = "988847123412385995937737458959"
      f:=bigint.Mod(a, b) // f = "0"
  • Task2: Write tests on your own bigint package.

5.2 Gin

5.3 PostgreSQL

5.4 Go + SQLX

5.5 Migrations

5.6 Go + Swaggo

* Project6

  • Develop a simple blogpost REST APIs using Golang + Gin + SQLX(PostgreSQL) + Swaggo (+Include testing).

6.1 Protocol Buffers (protobuf) and gRPC

6.2 Go + gRPC

7.1 Docker

* Project7

  • Building A Containerized Microservices for a simple blogpost project.

Loading...

8.1 MongoDB - Pending...

8.2 NodeJS + gRPC - Pending...

* Proejct8 - Pending...

9.1 DB modeling - Pending...

10.1 EDA - Pending...

11.1 Web Socket - Pending...


References

Fireship | freeCodeCamp.org | TutorialEdge | Traversy Media | CS50 | geeksforgeeks | Coding For Everybody | DoS - Domain of Science | Basics Explained, H3Vtux | LetsCode | Tren Black | OpenCanvas | Neso Academy | Techquickie | DorianDotSlash | Ksk Royal | Linux Tex | Gary Explains | Android and Tech Solutions | Colt Steel | Tech With Tim | Victor Geislinger | devdojo | Programming with Mosh | uidotdev | James Q Quick | JavaScript Mastery | Troy Amelotte | Stephane Maarek | Gopher Guides | Tech and Beyond With Moss | The Linux Foundation | Simplilearn | Amigoscode |


Backend Roadmap © 2023 by Saidamir Botirov is licensed under CC BY-SA 4.0

CC BY-SA 4.0 License