Barcha qo'llanmalar

Yangi boshlovchidan professionalgacha olib chiqadigan 20 ta backend loyiha g'oyasi

Ko'nikmalaringizni oshirish uchun backend loyihalar qidiryapsizmi? Oddiy ilovalardan murakkab tizimlargacha bo'lgan eng yaxshi 20 ta loyiha g'oyamiz bilan tanishing. Bugunoq yaratishni boshlang!

Muallif: Fernando Doglio

Backend loyihalar uchun yangi g'oyalar.

Backend developer'lar sifatida ishimizni boshqalarga ko'rsatish oson emas, chunki qiladigan ishimiz unchalik ko'zga tashlanmaydi.

Shunday bo'lsa-da, backend developer bo'lsangiz ham, loyihalar portfoliosiga ega bo'lish juda muhim, chunki u yangi ish imkoniyatlariga yo'l ochishi mumkin.

Qo'shimcha bonus sifatida, portfolio uchun ilovalar yaratishning butun jarayonidan oladigan tajribangiz kod yozish ko'nikmalaringizni yaxshilashga yordam beradi.

Keling, loyihalar portfoliongizni boyitish va backend development'ni o'rganish uchun ustida ishlashingiz mumkin bo'lgan eng yaxshi 20 ta backend loyihani ko'rib chiqaylik.

Shuni yodda tutingki, bu loyiha g'oyalari bajarilishi eng osonidan eng qiyiniga qarab tartiblangan va agar shoshilmasangiz, butun ro'yxatni bajarib chiqish kamida bir yil vaqt oladi.

Shunday ekan, qulay o'rnashib oling, sevimli issiq ichimligingizdan bir piyola quying va boshladik!

1. Shaxsiy blog platformasi API'si

Qiyinlik darajasi: Oson

Qo'llaniladigan ko'nikmalar va texnologiyalar: asosiy amallar uchun CRUD, ma'lumotlar bazalari (SQL yoki NoSQL), server-side RESTful API.

Blog platformasi API'si

Backend loyihalar haqida gap ketganda juda keng tarqalgan loyihadan boshlaylik.

Bu shaxsiy blogni ishlatib turadigan RESTful API. Demak, siz quyidagi vazifalarni bajaradigan backend API yaratishingiz kerak bo'ladi:

  • Maqolalar ro'yxatini qaytarish. Nashr sanasi yoki tag'lar kabi filtrlar qo'shishingiz mumkin.
  • Maqola ID'si bo'yicha ko'rsatilgan bitta maqolani qaytarish.
  • Nashr qilinadigan yangi maqola yaratish.
  • ID bo'yicha ko'rsatilgan bitta maqolani o'chirish.
  • Bitta maqolani yangilash — bunda ham maqolani uning ID'si orqali ko'rsatasiz.

Ana shu endpoint'lar bilan siz asosiy CRUD amallarini (Create, Read, Update va Delete) qamrab olgan bo'lasiz.

Tech stack bo'yicha tavsiya sifatida, agar Node'ni tanlasangiz, asosiy backend freymvorki sifatida Fastify'dan, Python uchun Django'dan, Ruby uchun esa hatto Ruby on Rails yoki Sinatra'dan foydalanishingiz mumkin. Ma'lumotlar bazasiga kelsak, NoSQL'ni sinab ko'rmoqchi bo'lsangiz MongoDB'dan, avval relational ma'lumotlar bazalari bilan ishlashni boshlamoqchi bo'lsangiz MySQL'dan foydalanishingiz mumkin.

2. To-Do ro'yxati API'si

Qiyinlik darajasi: Oson

Qo'llaniladigan ko'nikmalar va texnologiyalar: REST API dizayni, JSON, basic authentication middleware.

To-Do ro'yxati API'si

Backend loyiha g'oyalarimizda API'lar bilan davom etamiz, bu safar To-Do ilovasi uchun. Uning avvalgisidan farqi nimada?

Avvalgi loyiha faqat asosiy CRUD amallariga e'tibor qaratgan bo'lsa, bu yerda biz yanada qiziqarliroq imkoniyatlarni qo'shamiz, masalan:

  1. Authentication logic'i — bu foydalanuvchilar va ularning credential'lari uchun yangi jadval yuritishingiz kerakligini anglatadi
  2. Siz ham foydalanuvchilarni, ham vazifalarni yaratishingiz kerak bo'ladi.
  3. Shuningdek, vazifalarni (ularning holatini) yangilash va hatto ularni o'chirish imkoniga ega bo'lishingiz kerak.
  4. Vazifalar ro'yxatini olish, ularni holati bo'yicha filtrlash va har birining tafsilotlarini olish.

Buni o'zingiz xohlagan dasturlash tili va freymvork bilan amalga oshirishingiz mumkin, ammo avvalgi loyihadagi stack'dan foydalanishda davom etsangiz ham bo'ladi.

3. Ob-havo API'si uchun wrapper servis

Qiyinlik darajasi: Oson

Qo'llaniladigan ko'nikmalar va texnologiyalar: uchinchi tomon API integratsiyasi, keshlash strategiyasi, environment variable'larni boshqarish.

Ob-havo API'si uchun wrapper servis

Ushbu yangi backend loyiha bilan API sehrimizni keyingi bosqichga olib chiqaylik. Endi faqat ma'lumotlar bazasiga tayanish o'rniga ikkita yangi mavzu bilan shug'ullanamiz:

  • Tashqi servislardan foydalanish.
  • Tezkor in-memory storage yordamida keshlash qo'shish.

Qaysi ob-havo API'sidan foydalanishga kelsak, o'zingizga yoqqanini tanlashingiz mumkin; taklif sifatida mana Visual Crossing API'si havolasi — u mutlaqo BEPUL va ishlatish oson.

In-memory keshga kelsak, juda keng tarqalgan tavsiya — Redis'dan foydalanish; u haqida bu yerda batafsil o'qishingiz mumkin. Tavsiya sifatida, foydalanuvchi kiritgan shahar kodini kalit sifatida ishlatib, API'ni chaqirish natijasini o'sha kalit ostida saqlashingiz mumkin.

Shu bilan birga, keshga qiymatni “set” qilganingizda, unga soniyalarda amal qilish muddatini ham berishingiz mumkin (SET buyrug'idagi EX flag'idan foydalanib). Shunday qilib, ma'lumotlar yetarlicha eskirganda kesh (kalitlar) avtomatik ravishda o'zini tozalaydi (masalan, unga 12 soatlik amal qilish muddati berilsa).

4. Xarajatlarni kuzatish API'si

Qiyinlik darajasi: Oson

Qo'llaniladigan ko'nikmalar va texnologiyalar: data modeling, foydalanuvchi authentication'i (JWT).

Xarajatlarni kuzatish API'si

“Oson” backend loyihalarimizning so'nggisi sifatida yana bitta API — xarajatlarni kuzatish API'sini ko'rib chiqaylik. Bu API sizga quyidagilarni qilish imkonini berishi kerak:

  • Yangi foydalanuvchi sifatida ro'yxatdan o'tish.
  • Authentication va foydalanuvchi session'ini boshqarish uchun JWT'larni yaratish va validatsiya qilish.
  • O'tgan xarajatlaringizni ro'yxat ko'rinishida chiqarish va filtrlash. Quyidagi filtrlarni qo'shishingiz mumkin:
    • O'tgan hafta.
    • O'tgan oy.
    • So'nggi 3 oy.
    • Maxsus (o'zingiz tanlagan boshlanish va tugash sanasini ko'rsatish uchun).
  • Yangi xarajatlar qo'shish.
  • Mavjud xarajatlarni o'chirish.
  • Mavjud xarajatlarni yangilash.

Endi ba'zi cheklovlar qo'shaylik:

  • Endpoint'larni himoya qilish va so'rov yuboruvchini aniqlash uchun JWT (JSON Web Token)'dan foydalanasiz.
  • Turli xarajat kategoriyalari uchun quyidagi ro'yxatdan foydalanishingiz mumkin (buni data model'ingizning bir qismi sifatida qanday amalga oshirishni o'zingiz hal qiling):
    • Oziq-ovqat
    • Dam olish
    • Elektronika
    • Kommunal xizmatlar
    • Kiyim-kechak
    • Salomatlik
    • Boshqalar.

Tavsiya sifatida, bu loyiha uchun MongoDB yoki Mongoose kabi ORM'dan foydalanishingiz mumkin (agar buning uchun JavaScript/Node ishlatayotgan bo'lsangiz).

Shu paytgacha qilgan barcha ishlaringizdan so'ng, keyingi safar yangi API yaratishingiz kerak bo'lganda o'zingizni ancha ishonchli his qilishingiz kerak.

5. Markdown'da qaydlar yozish ilovasi

Qiyinlik darajasi: O'rtacha

Qo'llaniladigan ko'nikmalar va texnologiyalar: matnni qayta ishlash, Markdown kutubxonalari, persistent storage, fayl yuklash imkoniyatiga ega REST API.

Markdown'da qaydlar yozish ilovasi

Shu vaqtgacha API'lar yaratib keldingiz, shuning uchun bu konsepsiyaning o'zi endi muammo bo'lmasligi kerak. Biroq biz RESTful API'ingiz orqali fayl yuklashga ruxsat berib, qiyinlik darajasini oshiramiz. Bu qism RESTful muhitda qanday ishlashini tushunib olishingiz, so'ngra nomlar to'qnashuvidan qochgan holda ushbu fayllarni saqlash strategiyasini topishingiz kerak bo'ladi.

Shuningdek, matnni quyidagi usullarda qayta ishlashingiz kerak bo'ladi:

  • Qaydning grammatikasini tekshirish uchun endpoint taqdim etasiz.
  • Shuningdek, Markdown matn ko'rinishida uzatilishi mumkin bo'lgan qaydni saqlash uchun ham endpoint taqdim etasiz.
  • Boshqa bir endpoint orqali Markdown qaydning HTML versiyasini (render qilingan qaydni) qaytarish.

Tavsiya sifatida, agar aynan shu loyiha uchun JavaScript ishlatayotgan bo'lsangiz, Node.js moduli bo'lgan Multer kabi kutubxonadan foydalanishingiz mumkin.

6. URL qisqartirish servisi

Qiyinlik darajasi: O'rtacha

Qo'llaniladigan ko'nikmalar va texnologiyalar: ma'lumotlar bazasi indexing'i, HTTP redirect'lar, RESTful endpoint'lar

URL qisqartirish servisi

Endi standart API'laringizdan uzoqlashib, URL qisqartirish masalasiga kirishamiz. Bu juda keng tarqalgan servis bo'lib, u juda uzun URL'larni qisqartirish imkonini beradi — ayniqsa ularni ijtimoiy tarmoqlarda ulashmoqchi yoki osongina eslab qolinadigan qilmoqchi bo'lganingizda.

Ushbu loyiha g'oyasi uchun quyidagi funksiyalarga e'tibor qarataylik; operatsion tizimingiz qanday bo'lishidan qat'i nazar, ularni lokal muhitingizda bemalol amalga oshira olasiz.

  • So'rovning bir qismi sifatida uzun URL'ni uzatib, uning qisqaroq versiyasini olish imkoniyati. Qisqartirishni qanday amalga oshirishni o'zingiz hal qilasiz.
  • URL'ning qisqa va uzun versiyalarini keyinchalik redirect paytida ishlatish uchun ma'lumotlar bazasida saqlash.
  • Servisingizda barcha trafikni qabul qiladigan catch-all route'ni sozlash (qaysi URI ishlatilishidan qat'i nazar): u to'g'ri uzun versiyani topib, redirect qiladi va shu tariqa foydalanuvchi kerakli manzilga muammosiz yo'naltiriladi.

7. Real-time so'rovnoma ilovasi

Qiyinlik darajasi: O'rtacha

Qo'llaniladigan ko'nikmalar va texnologiyalar: WebSocket'lar, ma'lumotlarni jonli yangilash, state management

Real-time so'rovnoma ilovasi

Biroz vaqt API'larni chetga qo'yib, veb-dasturlashdagi yana bir qaynoq mavzu — real-time o'zaro ta'sirlarga e'tibor qaratish vaqti keldi. Aslida, keling, socket'lardan foydalanib ko'raylik.

Socket'lar juda kam kod qatorlari bilan ikki yoki undan ortiq tomonlar (tizimlar) o'rtasida ikki tomonlama aloqani yo'lga qo'yishning ajoyib usuli. Socket'lar haqida bu yerda batafsil o'qing.

Shunday ekan, bu loyiha uchun biz ham mijoz, ham server yaratamiz. Mijoz oddiygina CLI (Command Line Interface) vositasi yoki serverga ulanib, qaytarilayotgan ma'lumotlarni real-time rejimida ko'rsatadigan terminal dasturi bo'lishi mumkin.

Socket'ga asoslangan bu birinchi loyihaning ishlash tartibi oddiy:

  • Mijoz serverga ulanadi va oldindan belgilangan so'rov yuboradi.
  • Server bu so'rovni qabul qilgach, xuddi shu kanal orqali avtomatik javob yuboradi.

Bu tartib HTTP'ga asoslangan aloqa qanday ishlashiga juda o'xshab ko'rinsa-da, implementatsiya butunlay boshqacha bo'ladi. Yodda tutingki, mijoz nuqtai nazaridan so'rov yuboriladi va hech qanday kutish logic'i bo'lmaydi; buning o'rniga mijozda serverdan xabar kelganda ishga tushadigan kod bo'ladi.

Bu socket'ga asoslangan murakkabroq tizimlarni yaratish yo'lidagi ajoyib birinchi qadam.

8. Oddiy e-commerce API'si

Qiyinlik darajasi: O'rtacha

Qo'llaniladigan ko'nikmalar va texnologiyalar: xarid savatchasi logic'i, payment gateway integratsiyasi (Stripe, PayPal), mahsulotlar inventarini boshqarish

Oddiy e-commerce API'si

Yana API'lar dunyosiga qaytamiz, bu safar logic'i og'ir bo'lgan implementatsiyani maqsad qilamiz.

Bu loyihada hozirgacha ko'rib chiqqan hamma narsani yodda tutishingiz kerak bo'ladi:

  • Ko'plab foydalanuvchilar u bilan ishlay olishini ta'minlash uchun JWT authentication.
  • Tashqi servislar bilan o'zaro ishlash. Bu yerda siz Stripe kabi payment gateway'lar bilan integratsiya qilasiz.
  • Mahsulotlar, xarid savatchalari va boshqa narsalarni boshqara oladigan murakkab data model.

Shularni hisobga olgan holda, ushbu tizimning vazifalarini ko'rib chiqaylik:

  • Authorization'ni boshqarish uchun JWT yaratish va validatsiya qilish.
  • Yangi foydalanuvchilar yaratish imkoniyati.
  • Xarid savatchasini boshqarish, bu payment gateway integratsiyasini ham o'z ichiga oladi.
  • Mahsulotlar ro'yxati.
  • Ma'lumotlar bazasida mahsulotlarni yaratish va tahrirlash imkoniyati.

Bu loyihada funksiyalar unchalik ko'p emasdek tuyulishi mumkin, ammo u buni murakkabligi bilan qoplaydi. Shuning uchun uni o'tkazib yubormang: u hozirgacha egallagan deyarli barcha ko'nikmalaringizdan qayta foydalangani sababli o'sishingizni tekshirishning ajoyib usuli bo'lib xizmat qiladi.

9. Fitnes mashg'ulotlarini kuzatish ilovasi

Qiyinlik darajasi: O'rtacha

Qo'llaniladigan ko'nikmalar va texnologiyalar: har bir foydalanuvchiga tegishli ma'lumotlarni saqlash, mashg'ulot sessiyalari uchun CRUD, sana va vaqt bilan ishlash.

Fitnes mashg'ulotlarini kuzatish ilovasi

Bu backend loyiha shunchaki foydalanuvchi yaratgan qaydlarni qabul qilish haqida emas, balki foydalanuvchilarga o'z mashqlaridan iborat mashg'ulot jadvallarini yaratish, so'ngra ularni bajarib, qaysilarini bajargani va qaysilarini bajarmaganini belgilab borish imkonini berish haqida.

Shuningdek, ularga ko'rib chiqilayotgan mashq qanday o'tgani va kelajakda uni o'zgartirishni xohlash-xohlamasligi haqidagi izohlar bilan maxsus qaydlar qo'shish uchun ham joy berishni unutmang.

Ushbu backend loyiha uchun quyidagi vazifalarni yodda tuting:

  • Bu backend tizimda foydalanuvchining ro'yxatdan o'tish va tizimga kirish jarayoni bo'lishi kerak, chunki undan ko'plab foydalanuvchilar foydalana olishi kerak.
  • Authentication uchun xavfsiz JWT jarayoni bo'lishi kerak.
  • Tizim foydalanuvchilarga bir nechta mashqdan iborat mashg'ulotlar yaratish imkonini berishi kerak.
  • Foydalanuvchi har bir mashg'ulotni yangilashi va unga izohlar qoldirishi mumkin bo'ladi.
  • Foydalanuvchi yaratgan jadval aniq bir sanaga bog'lanishi kerak, faol yoki kutilayotgan mashg'ulotlarning har qanday ro'yxati ham sana bo'yicha saralanishi kerak (agar bir qadam oldinga bormoqchi bo'lsangiz, vaqt bo'yicha ham).
  • Shuningdek, o'tgan mashg'ulotlar bo'yicha hisobot bo'lishi va unda so'ralgan davr mobaynida yakunlangan mashg'ulotlar foizi ko'rsatilishi kerak.

Bu loyiha uchun data model ham murakkab bo'lishi mumkin, chunki sizda mashg'ulot sessiyalariga guruhlanishi kerak bo'lgan oldindan belgilangan mashqlar bo'ladi, sessiyalarga esa o'z navbatida izohlar (foydalanuvchi kiritgan ma'lumotlar) bog'lanishi mumkin.

Fitnes mashg'ulotlarini kuzatish ilovasining data model'i

Bu yerda tuzilmali modeldan foydalanishning MongoDB kabi document-based yondashuvga nisbatan afzalliklarini o'ylab ko'ring va implementatsiyangiz uchun ma'qulroq tuyulganini tanlang.

10. Retseptlar almashish platformasi

Qiyinlik darajasi: O'rtacha

Qo'llaniladigan ko'nikmalar va texnologiyalar: fayl yuklash va rasmlarni qayta ishlash (masalan, Sharp), foydalanuvchi ruxsatlari, murakkab query'lar

Retseptlar almashish platformasi

Bu loyiha birinchisiga — shaxsiy blog platformasiga juda o'xshab tuyulishi mumkin, ammo biz o'sha konsepsiyani olib, ustiga yana ko'p narsalarni qo'shamiz.

Biz quyidagi amallarni bajarish imkonini beradigan RESTful API (aniqrog'i, bir nechtasini) yaratamiz:

  • Retseptlar ro'yxatiga kirish. Kalit so'zlar (matn kiritish), nashr sanasi, oshpaz va yorliqlar bo'yicha filtrlay olishingiz kerak. Bu endpoint'ga kirish hamma uchun ochiq bo'lishi kerak.
  • Ro'yxatda pagination bo'lishi kerak va u har bir sahifada javobning bir qismi sifatida qaytarilishi kerak.
  • Foydalanuvchilar o'z retseptlarini yuklash uchun tizimda oshpaz sifatida ro'yxatdan o'ta olishlari kerak.
  • Yangi retsept postlarini yaratishga mas'ul endpoint'larni himoya qilish uchun JWT bilan himoyalangan tizimga kirish jarayoni bo'lishi shart.
  • Retseptning bir qismi sifatida yuklangan rasmlar qayta ishlanib, standart o'lchamga keltirilishi kerak (o'lchamlarni o'zingiz tanlaysiz). Buning uchun Sharp kabi kutubxonadan foydalanishingiz mumkin.

11. Kino chiptalarini bron qilish tizimi

Qiyinlik darajasi: Qiyin

Qo'llaniladigan ko'nikmalar va texnologiyalar: relational data modeling (SQL), o'rinlarni bron qilish logic'i, transaction'larni boshqarish, seanslar jadvalini boshqarish.

Kino chiptalarini bron qilish tizimi

Kompaniyalar uchun bularning barchasini boshqaradigan juda qimmat tayyor vositalar mavjud, quyidagi diagramma esa bu murakkablikni bir qadar ko'rsatib beradi.

Backend loyihalar orasida bu loyiha veb-dasturlash sohasida ishlaganingizda hal qilishingizga to'g'ri kelishi mumkin bo'lgan turli xil muammolarning ajoyib namunasidir.

Kino chiptalarini bron qilish tizimi har qanday foydalanuvchiga u bormoqchi bo'lgan aniq kunda namoyish etilayotgan istalgan film uchun chiptalar va ularga bog'langan o'rinlarni olish imkonini berishi kerak. Faqat shu tavsifning o'zi yodda tutishimiz kerak bo'lgan ko'plab funksiyalar va cheklovlarni ko'rsatib beradi:

  • Bizda filmlar ro'yxati bo'ladi (ehtimol, kinoteatrlar ro'yxati ham).
  • Har bir film ma'lum vaqt davomida takrorlanuvchi jadval asosida namoyish etiladi, so'ngra butunlay olib tashlanadi va boshqa qaytmaydi.
  • Foydalanuvchilar filmlar ro'yxatini ko'rishi, ularni qidirishi hamda sanalar, janrlar va hatto aktyorlar bo'yicha filtrlay olishi kerak.
  • Film topilgach, foydalanuvchi o'zi tanlagan film va o'zi tanlagan sana uchun o'rinlarni tanlay olishi kerak.
  • Bu esa o'rinlar taqsimoti va bo'sh o'rinlarni tushunish uchun kinoteatringizning virtual ko'rinishini saqlab borishingizni talab qiladi.
  • Oxirida foydalanuvchi Stripe kabi tashqi payment gateway orqali to'lov ham qila olishi kerak (bu bosqichni avval ko'rib chiqqanmiz).

12. Avtomatik NLP tahliliga ega restoran sharhlari platformasi (API)

Qiyinlik darajasi: Qiyin

Qo'llaniladigan ko'nikmalar va texnologiyalar: RESTful API, in-memory ma'lumotlar bazasi (jonli leaderboard uchun), SQL, ijobiy va salbiy izohlarni avtomatik belgilash uchun Natural Language Processing.

Restoran sharhlari platformasi

Endi bu loyiha foydalanuvchi kiritgan ma'lumotlarni asosga olib, noSQL va AI olamiga burilish yasaydi. Ushbu backend loyihaning maqsadi — foydalanuvchilarga quyidagilarni qilish imkonini beradigan juda oddiy API taqdim etish:

  • Restoran haqida o'z sharhini kiritish (ideal holatda, foydalanuvchilar to'g'ri restoranga sharh yozayotganiga ishonch hosil qilish uchun API restoran ID'sini so'rashi kerak).
  • Restoranlar oladigan sharhlar turiga qarab, umumiy ijobiy yoki salbiy ballga ega restoranlar leaderboard'ini yuritish. Buning uchun API'ingiz ishlatayotgan ma'lumotlar bazangizga murojaat qilish o'rniga Redis'ni query qilishi uchun Redis'dan in-memory leaderboard sifatida foydalanishingiz mumkin. Bu, shuningdek, leaderboard'ni Redis'da ham yangilab borishingiz kerakligini anglatadi (maslahat: buni qanday qilishni tushunish uchun SortedSet ma'lumot tipini o'rganib chiqing).
  • Sharhning ijobiy yoki salbiy ekanini tushunish uchun foydalanuvchi sharhining matn qismiga NLP (Natural Language Processing) qo'llash.
  • NLP natijasidan leaderboard uchun baholash tizimi sifatida foydalanish.

Tavsiya sifatida, bu loyihada Python'dan foydalanishni xohlashingiz mumkin, chunki bu til uchun NLP bo'yicha kutubxonalar odatda ko'proq bo'ladi.

13. Multiplayer Battleship o'yini serveri

Qiyinlik darajasi: Qiyin

Qo'llaniladigan ko'nikmalar va texnologiyalar: o'yin holatini sinxronlash, low-latency networking, concurrency control.

Multiplayer Battleship o'yini serveri

Bu loyihada siz noldan to'liq o'yin yaratmaysiz, shuning uchun xavotir olmang.

Biroq siz o'yin serverini yaratasiz. O'yin serveringiz har bir o'yinchi taxtasining ichki holatini saqlab turishi, shuningdek, ularning harakatlari va natijalarini broadcast qilish orqali o'yinchilar o'rtasida aloqani ta'minlashi kerak. Bu yerda cheklov sifatida “low-latency networking” borligi sababli, mantiqiy yechim socket'lardan foydalanish bo'ladi (shuning uchun agar hali qilmagan bo'lsangiz, 7-loyihaga qaytib, avval uning ustida ishlang).

O'zingizga qulayroq bo'lgan dasturlash tilini tanlashingiz mumkin, ammo quyidagilarni qilishingiz kerakligini yodda tuting:

  • O'yinchi holati va o'yin holatini kuzatib borish.
  • O'yinchilar va server o'rtasida ikki tomonlama aloqani ta'minlash.
  • O'yinchilarga o'yinga qo'shilish va qandaydir yo'l bilan o'zlarining boshlang'ich holatini sozlash imkonini berish.

Hatto bu multiplayer o'yinning “shunchaki” terminal versiyasini yaratayotgan bo'lsangiz ham, bu ustida ishlash juda qiziqarli loyiha bo'lishi mumkin, chunki siz ushbu ro'yxatda hozirgacha ko'rib chiqilgan bir nechta konsepsiya va texnologiyalardan foydalanasiz.

14. Ma'lumotlar bazasini backup qilish uchun CLI utilitasi

Qiyinlik darajasi: Qiyin

Qo'llaniladigan ko'nikmalar va texnologiyalar: ilg'or SQL, ma'lumotlar bazasi asoslari, CLI development, Node.js (CLI uchun)

Ma'lumotlar bazasini backup qilish uchun CLI utilitasi

Endi biroz vaqtga API dunyosidan uzoqlashib, command line interface'lar dunyosiga o'tamiz — bu ham backend developer'lar ishlaydigan juda keng tarqalgan soha.

Bu safar loyiha — butun ma'lumotlar bazasining backup'ini oladigan CLI utilitasi.

Shunday qilib, bu loyihada siz quyidagi parametrlarni qabul qiladigan command line utilitasini yaratasiz:

  • Host: ma'lumotlar bazangizning host'i (u localhost yoki boshqa istalgan manzil bo'lishi mumkin).
  • Username: utilita tizimga kirish va ma'lumotlar bazasiga query yuborish uchun username'ga muhtoj bo'ladi.
  • Password: parol bilan ham xuddi shunday; odatda ma'lumotlar bazalari shu tarzda himoyalanadi.
  • DB Name: backup qilinadigan ma'lumotlar bazasining nomi. Biz ushbu ma'lumotlar bazasi ichidagi barcha jadvallarning backup'ini olamiz.
  • Destination folder: barcha dump fayllar saqlanadigan papka.

Bu ma'lumotlarning barchasi bilan utilitangiz ma'lumotlar bazasiga ulanishi, jadvallar ro'yxatini olishi va har bir jadvalning tuzilishi hamda ma'lumotlarini aniqlay olishi kerak. Oxir-oqibat, manzil papkasidagi natija fayllarda ma'lumotlar bazasini boshqa serverda faqat shu fayllardan foydalanib tiklash uchun kerak bo'ladigan hamma narsa bo'lishi kerak.

Va nihoyat, agar hali eshitmagan bo'lsangiz, SHOW CREATE TABLE statement'ini ko'rib chiqishingiz mumkin.

15. Onlayn kod kompilyatori API'si

Qiyinlik darajasi: Qiyin

Qo'llaniladigan ko'nikmalar va texnologiyalar: kodni sandbox ichida bajarish, kompilyatorlar bilan integratsiya, WebSocket aloqasi.

Onlayn kod kompilyatori API'si

Bu loyihada siz masofadan kod bajaradigan ilovaning backend qismini yaratasiz. Boshqacha aytganda, API'laringiz tanlangan aniq bir tilda yozilgan manba kodini qabul qilishi (xohlagan tilingizni tanlab, faqat o'shanga ruxsat berishingiz mumkin), uni ishga tushirishi va so'ngra o'sha bajarilish natijasini qaytarishi kerak.

Albatta, buni hech qanday cheklovlarsiz qilish bu ro'yxatning “qiyin” bo'limida turishga arzimaydi, shuning uchun darajani biroz ko'taramiz:

  • Kodni bajarish xavfsiz sandbox ichida amalga oshirilishi kerak, ya'ni kod yoki logic nimani talab qilishidan qat'i nazar, kod o'zi ishlayotgan tizimga zarar yetkaza olmasligi yoki unga ta'sir qila olmasligi kerak.
  • Bundan tashqari, uzoq davom etadigan vazifalar uchun API quyidagi ma'lumotlarni o'z ichiga olgan holat hisobotini ham taqdim etishi kerak:
  • Ishlash vaqti.
  • Bajarilish boshlangan vaqt.
  • Bajarilayotgan kod qatorlari.

16. Xabar almashish platformasi backend'i

Qiyinlik darajasi: Qiyin

Qo'llaniladigan ko'nikmalar va texnologiyalar: real-time xabar almashish, end-to-end encryption, kontaktlarni sinxronlash

Xabar almashish platformasi backend'i

Ha, bu yerda chat platformasi haqida gapiryapmiz. Backend developer sifatida esa siz ham server, ham mijoz ilovasini amalga oshirishga to'liq tayyorsiz.

Bu backend loyiha quyidagi vazifalarni amalga oshirish orqali 7-loyihani keyingi bosqichga olib chiqadi:

  • Mijoz ilovalari o'rtasida xabarlarni shifrlashni qo'shish
  • Kim onlayn ekanini aniqlash imkoniyati
  • O'sha foydalanuvchilar siz bilan muloqot qilayotganini aniqlash (ya'ni “[username] yozmoqda” xabarini real-time rejimida ko'rsatish).
  • Mijozlardan biri serverga yuborgan xabar ulangan qolgan barcha mijozlarga broadcast qilinishi kerak.

Bu loyihani amalga oshirish uchun texnologiya bo'yicha tavsiya sifatida Socket.io ajoyib tanlov bo'ladi. Bu degani, buning uchun JavaScript (node.js) ishlatasiz.

17. Content Delivery Network (CDN) simulyatori

Qiyinlik darajasi: Juda qiyin

Qo'llaniladigan ko'nikmalar va texnologiyalar: load balancing algoritmlari, keshlash strategiyalari, tarmoq latency'sini simulyatsiya qilish

Content Delivery Network (CDN) simulyatori

Ushbu backend loyihada biz kod yozishga emas, balki backend vositalari va ularning konfiguratsiyasiga e'tibor qaratamiz. CDN (yoki Content Delivery Network) — statik kontentni (matnli fayllar, rasmlar, audio va h.k.) xavfsiz va ishonchli tarzda yetkazib berish imkonini beruvchi platforma.

Barcha fayllarni bitta serverda saqlash o'rniga, kontent istalgan vaqtda sizga fayllarni taqdim eta oladigan serverlar tarmog'i bo'ylab replicate qilinadi va taqsimlanadi.

Ushbu loyihaning maqsadi — quyidagi jihatlarni yodda tutgan holda o'z CDN'ingizni sozlash yo'lini topish:

  • Cloud serverlardan foydalaning (buning uchun sevimli cloud provider'ingizni tanlashingiz mumkin)
  • Yuklamani barcha serverlar o'rtasida taqsimlash uchun load balancer'ni sozlang.
  • Keshlash strategiyasini yo'lga qo'ying.

Yodda tutingki, barcha yirik cloud provider'larda ma'lum muddat davomida barcha servislaridan foydalanish imkonini beruvchi free tier mavjud. Masalan, AWS foydalanishingiz mumkin bo'lgan resurs turlari bilan cheklangan to'liq bir yillik free tier taqdim etadi.

18. Frilanserlar uchun time-tracking CLI

Qiyinlik darajasi: Juda qiyin

Qo'llaniladigan ko'nikmalar va texnologiyalar: time tracking, interaktiv CLI, vaqt bilan bog'liq amallar uchun Day.js, hisobot tayyorlash.

Frilanserlar uchun time-tracking CLI

Frilanser sifatida ba'zan nima ustida ishlayotganingizni yoki to'lov olish vaqti kelganda ma'lum bir loyihaga qancha vaqt sarflaganingizni tushunish qiyin bo'lishi mumkin.

Shunday ekan, ushbu command line interface vositasi bilan biz frilanserlarning shu muammosini hal qilishga harakat qilamiz. Siz ishlab chiqayotgan vosita loyiha ustida ishlashni boshlayotganingizni belgilash imkonini berishi, ishni tugatgach esa to'xtatganingizni ham ko'rsata olishingiz kerak.

Bundan tashqari, ma'lum bir loyihaga hozirgacha sarflangan vaqt miqdorini ko'rsatadigan interaktiv hisobot rejimi bo'lishi kerak (sana va vaqt bo'yicha filtrlash imkoniyati bilan), shunda har bir mijozdan qancha haq olishni aniq bilasiz.

Foydalanuvchi nuqtai nazaridan quyidagi kabi buyruqlar bo'lishi mumkin:

  • freelance start project1
  • freelance stop project2

Interaktiv rejimda esa shunga o'xshash narsa ishlashi kerak:

  • report project1 since 1/2/24

Ushbu backend loyihadagi qiyinchilik avval ham yaratgan CLI'ning o'zida emas, balki ichkarida amalga oshishi kerak bo'lgan haqiqiy time tracking logic'ida. Siz turli backend loyihalarga bog'langan kichik vaqt bo'laklarini kuzatib borasiz va hisobot so'ralganda ma'lumotlar bazangizga to'g'ri query yuborib, faqat kerakli bo'laklarni olishingiz kerak — shunda keyinroq ularni qo'shib, to'g'ri sonni qaytara olasiz.

19. JS obfuscator CLI utilitasi

Qiyinlik darajasi: Juda qiyin

Qo'llaniladigan ko'nikmalar va texnologiyalar: code obfuscation, CLI yordamida fayllarni batch processing qilish, Node.js.

JS obfuscator CLI utilitasi

Code obfuscation — bu faylning oddiy matn tabiatini o'zgartirmagan holda mukammal o'qiladigan kodni faqat mashina tushuna oladigan narsaga aylantirish. Boshqacha aytganda, siz uni inson o'qishi va tushunishi uchun imkonsiz qilib qo'yasiz.

JS ecosystem'ida buni ko'plab vositalar bajaradi, endi navbat sizda — yangi vosita yaratib, aynan shu amalni bajaring. Qo'shimcha qiyinchilik sifatida, siz buni fayllarga to'la butun papkaga nisbatan bajaradigan vosita yozasiz (bir vaqtning o'zida faqat bitta faylga emas).

Har bir fayl uchun natija “.obs.js” kengaytmasi bilan xuddi shu papkaga joylashtirilishiga, shuningdek, ko'proq fayllarni qidirib ichki papkalarni ham aylanib chiqayotganingizga ishonch hosil qiling.

Aynan shu vazifalarni bajaradigan kutubxonalardan qochishga harakat qiling, chunki aks holda duch kelishingiz mumkin bo'lgan barcha muammolarni chetlab o'tib ketasiz va amalda bu tajribadan hech narsa o'rganmaysiz.

20. Web scraper CLI

Qiyinlik darajasi: Juda qiyin

Qo'llaniladigan ko'nikmalar va texnologiyalar: web scraping, headless browsing, rules engine

Web scraper CLI

Web scraper — bu kod orqali veb-saytda harakatlanish va bu jarayonda ko'rsatilgan veb-sahifalardan ma'lumot to'plash imkonini beradigan vosita.

Ushbu ro'yxatdagi so'nggi backend loyiha doirasida siz o'zingizning web scraper CLI vositangizni yaratasiz. Bu vosita foydalanuvchidan oldindan belgilangan buyruqlar ro'yxati orqali ma'lumot qabul qiladi, masalan:

  • show code: joriy sahifaning HTML kodini chiqarish uchun.
  • navigate: yangi URL'ni ochish uchun
  • capture: bu siz ko'rsatgan CSS selector yordamida joriy sahifa HTML'ining bir qismini qaytaradi.
  • click on: bu buyruq berilgan CSS selector yordamida ma'lum bir HTML elementiga bosishni amalga oshiradi.

Navigatsiyani yanada interaktiv qilish uchun qo'shimcha buyruqlar qo'shishdan tortinmang.

Backend loyiha g'oyalarimizning so'nggisi bilan siz backend development'ga oid barcha asosiy yo'nalishlarni qamrab oldingiz va agar hali qilmagan bo'lsangiz, backend development lavozimiga ariza topshirishga to'liq tayyorsiz.

Agar bu yerda ko'rib chiqilmagan biror texnologiyaga duch kelsangiz, uni qisqa vaqt ichida o'zlashtirish uchun kerakli ko'nikmalarga ega bo'lasiz.

Yo'l xaritalariQo'llanmalarFAQYouTube

yo'lxaritaroadmap.shasosida

Hamjamiyat tomonidan yaratilgan yo'l xaritalari, eng yaxshi amaliyotlar, loyihalar, maqolalar, manbalar va yo'nalishlar — o'z yo'lingizni tanlash va kasbingizda o'sish uchun.

© yo'lxarita·Shartlar·Maxfiylik·

roadmap.sh

Barcha kontent roadmap.sh loyihasidan olingan (© Kamran Ahmed) va shaxsiy o'rganish uchun o'zbek tiliga tarjima qilinmoqda.

Qidiruv

Yo'l xaritalari, loyihalar va savollarni qidiring