Skip to content

This project is an exam result, a web application designed to manage students' courses and study orders

Notifications You must be signed in to change notification settings

spacebagel/language_school_site

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📝 Russian language school site - Exam task

Problem description: develop a website for a language school where international students can make request to learn Russian in courses or with a tutor.

Recommended stack: HTML, CSS, JS, Bootstrap.

📃 Description

---HTTP requests don't work on modern hosting services, including Github Pages---

Main Page

The main page provides a brief overview of the language school, highlighting the advantages of learning the Russian language. It includes a link to the placement test to assess the user's proficiency in Russian. The page features functional buttons for filtering the list of courses by proficiency level, displaying available courses with options for selection. Additionally, it showcases accessible instructors and includes an interactive map with thematic locations related to Russian language schools.

Main Page

Main Page

Main Page

Main Page

The enrollment form allows users to select a course, along with the desired date and time for their sessions. It dynamically calculates the total cost, taking into account bonuses, additional options, and promotions.

Cet Course Form

Send Message Form

Placment Test Page

The placement test, available in Russian, consists of 15 questions. The answers help determine the user's proficiency level, enabling the system to suggest the most appropriate course based on their skills.

Placment Test

Placment Test Result

About Page

This page introduces the mission, values, and history of RuWave. It highlights the goal of breaking language barriers and making Russian language and culture accessible to learners around the world.

About Page

About Page

About Page

Account Page

This page is designed to manage course applications and study requests with tutors. It provides an overview of the user's orders, including the course name, session date, total cost, and actions available for each order. Users can view and track their requests, and interact with them by taking actions like modifying or canceling an order.

Account Page

Account Page Order Info

Mobile version

Mobile Version

Mobile Version

Mobile Version

Mobile Version

💾 Data

Tutor

Example of Tutor GET-request JSON-data:

{
    "id": 1,
    "name": "Irina Petrovna",
    "work_experience": 5,
    "languages_spoken": [
        "English",
        "Spanish",
        "Russian"
    ],
    "languages_offered": [
        "Russian",
        "English"
    ],
    "language_level": "Advanced",
    "price_per_hour": 500,
    "created_at": "2025-01-10T14:02:06.176121072",
    "updated_at": "2025-01-10T14:02:06.176134771"
}

Tutor data description:

Name Type Constraint Read-only Required Note
id int Y Set by server
name string max 255 chars Y
work_experience int Y
languages_spoken Array[String] Y
languages_offered Array[String] Y
language_level string Y
price_per_hour int Y
created_at DateTime Y Set by server
updated_at DateTime Y Set by server

Course

Example of Course GET-request JSON-data:

{
    "id": 1,
    "name": "Introduction to Russian language",
    "description": "A beginner course on Russian language learning.",
    "teacher": "Viktor Sergeevich",
    "level": "Beginner",
    "total_length": 8,
    "week_length": 2,
    "start_dates": [
        "2025-02-01T09:00:00",
        "2025-02-01T12:00:00",
        "2025-02-01T17:00:00",
        "2025-03-01T09:00:00",
        "2025-03-01T12:00:00",
        "2025-03-01T17:00:00"
    ],
    "course_fee_per_hour": 200,
    "created_at": "2025-01-10T14:02:06.170310084",
    "updated_at": "2025-01-10T14:02:06.170348154"
}

Course data description:

Name Type Constraint Required Read-only Note
id int Y Set by server
name string max 255 chars Y Course name
description string Y Course description
teacher string Y Teacher's name
level string Y Course level
total_length int Y Course duration in weeks
week_length int Y Hours per week
start_dates Array[DateTime] Y List of available start dates
course_fee_per_hour int Y Base cost per hour of training
created_at DateTime Y Set by server
updated_at DateTime Y Set by server

Order

Example of Order GET-request JSON-data:

{
    "id": 1,
    "tutor_id": 0,
    "course_id": 2,
    "date": "2025-01-15",
    "time": "14:00",
    "duration": 1,
    "persons": 2,
    "price": 2500,
    "early_registration": true,
    "group_enrollment": false,
    "intensive_course": true,
    "supplementary": true,
    "personalized": false,
    "excursions": false,
    "assessment": false,
    "interactive": true,
    "student_id": 1
}

Order data description: Here is the table with the new information:

Name Type Constraint Required Read-only Note
id int Y Y Set by server
tutor_id int Y Only one of these two fields
course_id int Y should be filled
date_start date Y Passed in the format YYYY-MM-DD
time_start time Y Passed in the format HH:MM
duration int 1 to 40 Y Duration in hours, for courses it is calculated automatically based on course data
persons int 1 to 20 Y
price int Y Total cost
early_registration bool Y Additional options, their absence in the request body is considered as false
group_enrollment bool Y Additional option
intensive_course bool Y Additional option
supplementary bool Y Additional option
personalized bool Y Additional option
excursions bool Y Additional option
assessment bool Y Additional option
interactive bool Y Additional option
student_id int Y ID of the current user, set by the server
created_at DateTime Y Set by the server
updated_at DateTime Y Set by the server

About

This project is an exam result, a web application designed to manage students' courses and study orders

Resources

Stars

Watchers

Forks