From 8d92ad69c382eb26723bb4444469f71a9a9183db Mon Sep 17 00:00:00 2001 From: YulikK Date: Thu, 23 Jan 2025 14:45:32 +0100 Subject: [PATCH 01/24] feat: 754 - add course page --- dev-data/about-course.data.tsx | 35 +++++++++++++++++++ dev-data/courseTitles.data.ts | 2 ++ dev-data/courses-data.types.ts | 3 +- dev-data/courses.data.ts | 22 ++++++++++++ dev-data/faq.data.ts | 49 ++++++++++++++++++++++++++- dev-data/index.ts | 3 +- dev-data/required.data.ts | 42 +++++++++++++++++++++++ dev-data/short-track-path.data.ts | 42 +++++++++++++++++++++++ dev-data/short-track.data.ts | 25 ++++++++++++++ dev-data/training-program.data.tsx | 26 ++++++++++++++ dev-data/widget-communication.data.ts | 13 ++++--- src/app/courses/short-track/page.tsx | 16 +++++++++ src/core/const/index.ts | 1 + src/core/services/api/index.ts | 2 ++ src/shared/constants.ts | 1 + src/views/javascript-preschool-ru.tsx | 4 +-- src/views/short-track.tsx | 34 +++++++++++++++++++ src/widgets/breadcrumbs/constants.ts | 1 + src/widgets/faq/ui/faq.tsx | 10 ++++-- 19 files changed, 319 insertions(+), 12 deletions(-) create mode 100644 dev-data/short-track-path.data.ts create mode 100644 dev-data/short-track.data.ts create mode 100644 src/app/courses/short-track/page.tsx create mode 100644 src/views/short-track.tsx diff --git a/dev-data/about-course.data.tsx b/dev-data/about-course.data.tsx index 0b61f0d35..2733d43a2 100644 --- a/dev-data/about-course.data.tsx +++ b/dev-data/about-course.data.tsx @@ -41,6 +41,7 @@ export const introLocalizedContent = { [COURSE_TITLES.AWS_FUNDAMENTALS]: enIntro, [COURSE_TITLES.AWS_CLOUD_DEVELOPER]: enIntro, [COURSE_TITLES.AWS_DEVOPS]: enIntro, + [COURSE_TITLES.SHORT_TRACK]: enIntro, }; const listData = { @@ -250,6 +251,39 @@ const awsDevops: AboutCourseInfo[] = [ }, ]; +const shortTrack: AboutCourseInfo[] = [ + { + id: 5, + title: 'Format', + info: 'Group training (up to 20 participants per group), self-study with provided materials, regular Q&A sessions, mock interviews, intensive practice, and a final project.', + icon: paperIcon, + }, + { + id: 1, + title: 'Focus', + info: 'React or Angular. The specific direction for each student will be determined closer to the end of the first month of training', + icon: planetIcon, + }, + { + id: 2, + title: 'EPAM Mentors and Experts', + info: 'Mentors and experts from EPAM will assist in the learning process and task reviews.', + icon: personIcon, + }, + { + id: 3, + title: 'Duration', + info: 'The course runs for 3 months, with interviews at EPAM planned by April.', + icon: noteIcon, + }, + { + id: 4, + title: 'Certificate', + info: 'After successful completion of the course, students will receive an electronic certificate.', + icon: awardIcon, + }, +]; + export const contentMapAbout: ContentMap = { [COURSE_TITLES.JS_RU]: javaScriptRU(), [COURSE_TITLES.JS_EN]: javaScriptEN(), @@ -260,4 +294,5 @@ export const contentMapAbout: ContentMap = { [COURSE_TITLES.AWS_FUNDAMENTALS]: angularNodejsAwsFundamentals('aws fundamentals'), [COURSE_TITLES.AWS_CLOUD_DEVELOPER]: awsCloudDeveloper, [COURSE_TITLES.AWS_DEVOPS]: awsDevops, + [COURSE_TITLES.SHORT_TRACK]: shortTrack, }; diff --git a/dev-data/courseTitles.data.ts b/dev-data/courseTitles.data.ts index 8b99f8627..d3b1dbea2 100644 --- a/dev-data/courseTitles.data.ts +++ b/dev-data/courseTitles.data.ts @@ -10,6 +10,7 @@ export const COURSE_TITLES = { AWS_FUNDAMENTALS: 'AWS Fundamentals', AWS_CLOUD_DEVELOPER: 'AWS Cloud Developer', AWS_DEVOPS: 'AWS DevOps', + SHORT_TRACK: 'RS EPAM Short Track', } as const; export const AWS_FUNDAMENTALS_BADGE = `${COURSE_TITLES.AWS_FUNDAMENTALS} badge` as const; @@ -32,4 +33,5 @@ export const DISCORD_LINKS = { [COURSE_TITLES.AWS_FUNDAMENTALS]: 'https://discord.com/invite/WEZxwRa4J6', [COURSE_TITLES.AWS_CLOUD_DEVELOPER]: 'https://discord.com/invite/WEZxwRa4J6', [COURSE_TITLES.AWS_DEVOPS]: 'https://discord.com/invite/WEZxwRa4J6', + [COURSE_TITLES.SHORT_TRACK]: 'https://discord.com/invite/QvEYg7EaQ4', } as const; diff --git a/dev-data/courses-data.types.ts b/dev-data/courses-data.types.ts index d48b8fb52..bcb04b1ab 100644 --- a/dev-data/courses-data.types.ts +++ b/dev-data/courses-data.types.ts @@ -13,13 +13,14 @@ export type DataMap = { javascriptRu: JSPath[]; angular: AngularAwsPath[]; awsDev: AngularAwsPath[]; + shortTrack: JSPath[]; }; export interface JSPath { id: number; title: string; description: string; - imageSrc: StaticImageData; + imageSrc?: StaticImageData; topics?: string[]; list?: ListData; marked?: boolean; diff --git a/dev-data/courses.data.ts b/dev-data/courses.data.ts index 83667798d..5debed39f 100644 --- a/dev-data/courses.data.ts +++ b/dev-data/courses.data.ts @@ -15,6 +15,7 @@ import javascript from '@/shared/assets/icons/javascript.webp'; import jsSecondary from '@/shared/assets/icons/js-secondary.webp'; import nodejs from '@/shared/assets/icons/node.svg'; import nodejsSecondary from '@/shared/assets/icons/nodejs-secondary.webp'; +import reactAngular from '@/shared/assets/icons/react-angular.svg'; import reactSecondary from '@/shared/assets/icons/react-secondary.webp'; import react from '@/shared/assets/icons/react.svg'; import { COURSE_LINKS, TO_BE_DETERMINED } from '@/shared/constants'; @@ -196,4 +197,25 @@ export const courses: Course[] = [ accentColor: '#7356BF', }, }, + { + id: '10', + title: COURSE_TITLES.SHORT_TRACK, + subTitle: null, + descriptionUrl: COURSE_LINKS.SHORT_TRACK, + altTitle: COURSE_TITLES.SHORT_TRACK, + iconSrc: reactAngular, + iconSmall: reactAngular, + secondaryIcon: reactAngular, + startDate: 'Feb 11, 2025', + registrationEndDate: 'Jan 31, 2025', + language: 'en', + mode: 'online', + detailsUrl: `/${ROUTES.COURSES}/${ROUTES.SHORT_TRACK}`, + enroll: + 'https://docs.google.com/forms/d/1SKjS03vVS6uxJvlNynGAZZs8spGnoWy1q3rnZUc9pyY/viewform?edit_requested=true', + backgroundStyle: { + backgroundColor: '#FFFCE9', + accentColor: '#FFDB20', + }, + }, ]; diff --git a/dev-data/faq.data.ts b/dev-data/faq.data.ts index c1e465b90..bfc68eb3c 100644 --- a/dev-data/faq.data.ts +++ b/dev-data/faq.data.ts @@ -1,4 +1,11 @@ -export const faqData = [ +export type FaqDataType = { + question: string; + answer: string | { id: number; + text: string; + title: string; + link: string; }[]; +}; +export const faqData: FaqDataType[] = [ { question: 'Где можно задать вопрос?', answer: [ @@ -58,3 +65,43 @@ export const faqData = [ 'Проекты "CV", "Portfolio", "CodeJam", "JS 30" проверяются в ходе кросс-чек. Алгоритмические задания, задачи из Codewars, а также задания "CV#1. Markdown & Git", "CV#2. HTML, CSS & Git Basics" проверяются автоматически. Ваши решения необходимо сабмитнуть в RS APP до дедлайна.', }, ]; + +export const faqDataShortTrack: FaqDataType[] = [ + { + question: 'Where can I ask a question?', + answer: [ + { + id: 0, + text: 'Questions can be asked in ', + title: 'Telegram chanel', + link: 'https://t.me/epamJsShortTrack', + }, + ], + }, + { + question: 'Is it possible to take the course completely online?', + answer: 'All stages of training can be completed online.', + }, + { + question: 'Is there a list of interview questions? What should I prepare for?', + answer: [ + { + id: 0, + text: 'You can prepare for the interview with this list of topics and questions', + title: 'topics and questions', + link: 'https://github.com/rolling-scopes-school/epam-short-track/tree/main/screening', + }, + ], + }, + { + question: 'If I’m selected for JS Short Track, can I combine it with the classic Stage#2?', + answer: + 'No. If you are selected for JS Short Track, combining it with the classic Stage#2 is not possible. You will need to choose one direction.', + }, + { + question: + 'If I’m not accepted for the JS Short Track course after the interview, can I continue with the JS Stage#2 course?', + answer: + 'Yes, if you don’t pass the selection for JS Short Track, you can continue your studies in JS Stage#2 ', + }, +]; diff --git a/dev-data/index.ts b/dev-data/index.ts index 7ac0bf6e2..7c5ef2bf5 100644 --- a/dev-data/index.ts +++ b/dev-data/index.ts @@ -34,6 +34,7 @@ export { type TrainingProgramType, } from './courseTitles.data'; export { type Benefit } from './benefit-mentorship.data'; +export { type FaqDataType, faqData } from './faq.data'; export { aboutMentorsData } from './about-mentors.data'; export { angular } from './angular.data'; export { angularPath } from './angular-path.data'; @@ -53,7 +54,6 @@ export { courseStatus, heroCourseLocalized } from './hero-course.data'; export { courses } from './courses.data'; export { coursesPath } from './courses-path.data'; export { events } from './events.data'; -export { faqData } from './faq.data'; export { generalMaterials } from './general.data'; export { heroPageData } from './hero-page.data'; export { javaScriptEn } from './javascript-en.data'; @@ -75,5 +75,6 @@ export { reactEn } from './react-en.data'; export { reactRu } from './react-ru.data'; export { requirementsData } from './requirements.data'; export { rsInNumbers } from './rs-in-numbers.data'; +export { shortTrackPath } from './short-track-path.data'; export { sliderPhotos } from './slider-photos.data'; export { videoTitleLocalized } from './about-video.data'; diff --git a/dev-data/required.data.ts b/dev-data/required.data.ts index 9e1e0c591..d84edab10 100644 --- a/dev-data/required.data.ts +++ b/dev-data/required.data.ts @@ -336,4 +336,46 @@ export const courseDataMap: CourseMap = { }, ], }, + [COURSE_TITLES.SHORT_TRACK]: { + title: 'What is required for course?', + knowBefore: { + title: 'Required before the start', + description: [ + 'You are a current Stage#1 student or a graduate/participant of any previous RS School batches.', + 'You have solid front-end development skills and an English proficiency level of at least B1 (Intermediate).', + 'You are ready to dedicate at least 20-40 hours per week to studying.', + 'You reside in one of the countries below: Georgia, Uzbekistan, Kazakhstan, Kyrgyzstan, Armenia, Poland, Lithuania, Turkey, Croatia, Bulgaria, Hungary, Romania, Serbia', + ], + }, + willLearn: [ + { + title: 'Poland document requirements:', + description: [ + 'EU Long-Term Residence Permit (Karta rezydenta długoterminowego UE)', + 'Permanent Residence Card (Karta stałego pobytu)', + 'Polish Citizenship (Obywatelstwo polskie)', + 'Temporary Residence Card (Karta czasowego pobytu) with a work market access note (dostęp do rynku pracy)', + ], + }, + { + title: 'Lithuania document requirements:', + description: [ + 'Citizenship of Lithuania or Latvia (Lietuvos Respublikos pilietybė)', + 'Permanent Residence Permit (Nuolatinis leidimas gyventi)', + 'Lithuanian EU Blue Card (ES mėlynoji kortelė)', + 'Temporary Residence Permit with work rights (Laikinas leidimas gyventi su teise dirbti)', + ], + }, + { + title: 'Turkish document requirements::', + description: ['Turkish citizens'], + }, + { + title: 'Croatia, Bulgaria, Hungary, Romania, Serbia:', + description: [ + 'employment is theoretically possible depending on your documents and experience', + ], + }, + ], + }, }; diff --git a/dev-data/short-track-path.data.ts b/dev-data/short-track-path.data.ts new file mode 100644 index 000000000..9b432e29d --- /dev/null +++ b/dev-data/short-track-path.data.ts @@ -0,0 +1,42 @@ +import { type JSPath } from './courses-data.types'; +import reactAngular from '@/shared/assets/icons/react-angular.svg'; +import stage1 from '@/shared/assets/stages/stage-1.webp'; +import stage2 from '@/shared/assets/stages/stage-2.webp'; +import stage3 from '@/shared/assets/stages/stage-3.webp'; + +export const shortTrackPath: JSPath[] = [ + { + id: 1, + title: 'Step 1', + description: + 'Fill out the application form by January 31. Expect an invitation for an interview. If there is a large number of applicants, there may be an additional test assignment.', + imageSrc: stage1, + }, + { + id: 2, + title: 'Step 2', + description: + 'Entry Interviews: Interviews start on January 27 (to ensure all interviews are completed before Stage#2 begins on February 11). Expect an invitation to register for the course', + imageSrc: stage3, + }, + { + id: 3, + title: 'Step 3', + description: + 'Join a team of 12-20 people under the guidance of a mentor. self-study with provided materials, regular Q&A sessions, mock interviews, intensive practice, and a final project.', + imageSrc: stage2, + }, + { + id: 4, + title: 'Step 4', + description: + 'At the end of the first month of course, you will decide on a framework with your mentor. Approximate ratio: 60% React / 40% Angular', + imageSrc: reactAngular, + }, + { + id: 5, + title: 'Step 5', + description: + 'Development of the final project in a team of 3 people under the guidance of a mentor', + }, +]; diff --git a/dev-data/short-track.data.ts b/dev-data/short-track.data.ts new file mode 100644 index 000000000..dca5148f7 --- /dev/null +++ b/dev-data/short-track.data.ts @@ -0,0 +1,25 @@ +import type { Trainer } from '@/entities/trainer'; +import aSerhiyenia from '@/shared/assets/mentors/a-serhiyenia.webp'; +import marharytaMalets from '@/shared/assets/mentors/m-malets.webp'; +import nataliaLebedevaImg from '@/shared/assets/mentors/n-lebedeva.webp'; + +export const shortTrackTrainers: Trainer[] = [ + { + name: 'Aleh Serhiyenia', + role: 'Front-End Developer', + bio: 'Aleh Serhiyenia works at EPAM Systems, developing web applications using Angular. He was always interested in technology and computers. Aleh received his higher education at BSUIR. For a long time, he engaged in production automation. Then he became interested in graphic design, the development of banners, logos, signs, etc. Aleh has always had a passion for programming. He passed RS School and then EPAM Lab. Now Aleh is ready to share his experience and expertise with RS School students.', + photo: aSerhiyenia, + }, + { + name: 'Marharyta Malets', + role: 'EPAM, Software Engineer', + bio: 'Marharyta graduated from RS School in July 2021 and by March 2022, she became a mentor for the first time. Since then, RS School has become an essential part of her life. She is sure that she is growing and learning with her mentees. Her favorite activity is participating in technical interviews. However, she is always open to new experiences and learning opportunities.', + photo: marharytaMalets, + }, + { + name: 'Natalia Lebedeva', + role: 'EPAM, Junior Software Engineer', + bio: 'Natalia trained at RS School, got into the spirit of the school and became its mentor and contributor. After passing through the EPAM lab, she realized her dream and became a developer. Loves spending time in the company of like-minded people and organizes RS School community meetings in Almaty. Wants to help others on their difficult path.', + photo: nataliaLebedevaImg, + }, +]; diff --git a/dev-data/training-program.data.tsx b/dev-data/training-program.data.tsx index a74bbac08..bbcabb44e 100644 --- a/dev-data/training-program.data.tsx +++ b/dev-data/training-program.data.tsx @@ -9,6 +9,7 @@ import { CourseNamesKeys, } from './courseTitles.data'; import awsPractitionerBadge from '@/shared/assets/aws-cloud-pract-badge.webp'; +import mentorWithStudents from '@/shared/assets/mentor-with-his-students.webp'; import angularImg from '@/shared/assets/rs-slope-angular.webp'; import awsDevImg from '@/shared/assets/rs-slope-aws-dev.webp'; import awsFundamentalsImg from '@/shared/assets/rs-slope-aws-fundamentals.webp'; @@ -299,6 +300,31 @@ export const contentMap: ContentMap = { ], image: awsDevImg, }, + [COURSE_TITLES.SHORT_TRACK]: { + title: 'About the Opportunities', + content: [ + + This a program designed for students who already possess strong foundational knowledge of + JavaScript/TypeScript and want to quickly level up to meet the requirements for employment + at EPAM. + , + + We are launching the Short Track now because new project positions are becoming available, + and we want to help you update your skills and prepare for interviews at a fast pace to be + ready by April. + , + , + ], + image: mentorWithStudents, + }, }; export const trainingProgramLink = { diff --git a/dev-data/widget-communication.data.ts b/dev-data/widget-communication.data.ts index 7d88a40f8..66f10e600 100644 --- a/dev-data/widget-communication.data.ts +++ b/dev-data/widget-communication.data.ts @@ -3,13 +3,17 @@ export const communicationText = { title: 'Communication', subTitle: 'Discord is the main communication channel in RS School', subTitleJs: 'RS School uses two main communication channels:', + // subTitleST: 'RS School uses two main communication channels:', firstParagraphFirstHalf: 'Here is link for the ', - discordParagraphTextJs: ': Join the Discord server to see the latest news and chat with students.', + discordParagraphTextJs: + ': Join the Discord server to see the latest news and chat with students.', discordLink: 'course Discord server', discordLinkJs: 'Discord', firstParagraphSecondHalf: ', where you can see latest news and chat with students.', - telegramParagraphTextJs: ': You can also join the official Telegram channel for updates and discussions.', - discordNote: 'Attention! In some countries, access to Discord requires the use of a VPN. If you are having trouble connecting, please try using a reliable VPN service.', + telegramParagraphTextJs: + ': You can also join the official Telegram channel for updates and discussions.', + discordNote: + 'Attention! In some countries, access to Discord requires the use of a VPN. If you are having trouble connecting, please try using a reliable VPN service.', secondParagraphFirstHalf: 'There are channels in ', telegramLink: 'Telegram', secondParagraphSecondHalf: @@ -29,7 +33,8 @@ export const communicationText = { firstParagraphSecondHalf: ', где вы можете посмотреть последние новости, задать вопросы и общаться со студентами.', telegramParagraphTextJs: '', - discordNote: 'Внимание! В некоторых странах для доступа к Discord требуется использование VPN. Если у вас возникают трудности с подключением, попробуйте использовать надёжный VPN-сервис.', + discordNote: + 'Внимание! В некоторых странах для доступа к Discord требуется использование VPN. Если у вас возникают трудности с подключением, попробуйте использовать надёжный VPN-сервис.', secondParagraphFirstHalf: 'Также есть каналы в ', telegramLink: 'Телеграм', secondParagraphSecondHalf: diff --git a/src/app/courses/short-track/page.tsx b/src/app/courses/short-track/page.tsx new file mode 100644 index 000000000..0dda6cb15 --- /dev/null +++ b/src/app/courses/short-track/page.tsx @@ -0,0 +1,16 @@ +import { Metadata } from 'next'; + +import { getCourseTitle } from '@/shared/helpers/get-course-title'; +import { React } from '@/views/react'; +import { ShortTrack } from '@/views/short-track'; +import { COURSE_TITLES } from 'data'; + +const courseName = COURSE_TITLES.SHORT_TRACK; + +export async function generateMetadata(): Promise { + return { title: await getCourseTitle(courseName) }; +} + +export default async function ShortTrackRoute() { + return ; +} diff --git a/src/core/const/index.ts b/src/core/const/index.ts index 9b27a0ccf..abfac0b48 100644 --- a/src/core/const/index.ts +++ b/src/core/const/index.ts @@ -33,6 +33,7 @@ export const ROUTES = { AWS_FUNDAMENTALS: 'aws-fundamentals', AWS_DEVOPS: 'aws-devops', REACT: 'reactjs', + SHORT_TRACK: 'short-track', MENTORSHIP: 'mentorship', DOCS_EN: 'docs/en', DOCS_RU: 'docs/ru', diff --git a/src/core/services/api/index.ts b/src/core/services/api/index.ts index 84ed1ade2..734684cf7 100644 --- a/src/core/services/api/index.ts +++ b/src/core/services/api/index.ts @@ -6,6 +6,7 @@ import { coursesPath, jsPath, jsPathRu, + shortTrackPath, } from 'data'; export const dataProviders: DataMap = { @@ -16,4 +17,5 @@ export const dataProviders: DataMap = { javascriptRu: jsPathRu, angular: angularPath, awsDev: awsDevPath, + shortTrack: shortTrackPath, }; diff --git a/src/shared/constants.ts b/src/shared/constants.ts index d8454318e..8054de62c 100644 --- a/src/shared/constants.ts +++ b/src/shared/constants.ts @@ -21,4 +21,5 @@ export const COURSE_LINKS = { AWS_FUNDAMENTALS: 'https://rs.school/courses/aws-fundamentals', AWS_CLOUD_DEVELOPER: 'https://rs.school/courses/aws-cloud-developer', AWS_DEVOPS: 'https://rs.school/courses/aws-devops', + SHORT_TRACK: 'https://rs.school/courses/short-track', }; diff --git a/src/views/javascript-preschool-ru.tsx b/src/views/javascript-preschool-ru.tsx index f1916b2b1..a7b4352ad 100644 --- a/src/views/javascript-preschool-ru.tsx +++ b/src/views/javascript-preschool-ru.tsx @@ -7,7 +7,7 @@ import { HeroCourse } from '@/widgets/hero-course'; import { Required } from '@/widgets/required'; import { Trainers } from '@/widgets/trainers'; import { TrainingProgram } from '@/widgets/training-program'; -import { CourseNames, preSchoolRu } from 'data'; +import { CourseNames, faqData, preSchoolRu } from 'data'; type JavaScriptPreSchoolRuProps = { courseName: CourseNames['JS_PRESCHOOL_RU']; @@ -23,7 +23,7 @@ export const JavaScriptPreSchoolRu = ({ courseName }: JavaScriptPreSchoolRuProps - + ); diff --git a/src/views/short-track.tsx b/src/views/short-track.tsx new file mode 100644 index 000000000..9612703bb --- /dev/null +++ b/src/views/short-track.tsx @@ -0,0 +1,34 @@ +import { faqDataShortTrack } from '../../dev-data/faq.data'; +import { shortTrackTrainers } from '../../dev-data/short-track.data'; +import { getCourseLanguage } from '@/shared/helpers/get-course-language'; +import { AboutCourse } from '@/widgets/about-course'; +import { Breadcrumbs } from '@/widgets/breadcrumbs'; +import { Certification } from '@/widgets/certification'; +import { Faq } from '@/widgets/faq'; +import { HeroCourse } from '@/widgets/hero-course'; +import { MemberActivity } from '@/widgets/member-activity'; +import { Required } from '@/widgets/required'; +import { Trainers } from '@/widgets/trainers'; +import { TrainingProgram } from '@/widgets/training-program'; +import { CourseNames } from 'data'; + +type JavaScriptEnProps = { + courseName: CourseNames['SHORT_TRACK']; +}; +export const ShortTrack = async ({ courseName }: JavaScriptEnProps) => { + const language = await getCourseLanguage(courseName); + + return ( + <> + + + + + + + + + + + ); +}; diff --git a/src/widgets/breadcrumbs/constants.ts b/src/widgets/breadcrumbs/constants.ts index ca760eb8a..4d9156f21 100644 --- a/src/widgets/breadcrumbs/constants.ts +++ b/src/widgets/breadcrumbs/constants.ts @@ -13,4 +13,5 @@ export const breadcrumbNameMap: BreadcrumbNameMap = { 'community': 'Community', 'aws-devops': 'AWS DevOps', 'mentorship': 'Mentorship', + 'short-track': 'RS EPAM Short Track', } as const; diff --git a/src/widgets/faq/ui/faq.tsx b/src/widgets/faq/ui/faq.tsx index 38404c458..4e4d0d6e4 100644 --- a/src/widgets/faq/ui/faq.tsx +++ b/src/widgets/faq/ui/faq.tsx @@ -3,19 +3,23 @@ import classNames from 'classnames/bind'; import { TextWithLink } from '@/shared/ui/text-with-link'; import { WidgetTitle } from '@/shared/ui/widget-title'; -import { faqData } from 'data'; +import { FaqDataType } from 'data'; import styles from './faq.module.scss'; const cx = classNames.bind(styles); -export const Faq = () => { +type FaqProps = { + questions: FaqDataType[]; +}; + +export const Faq = ({ questions }: FaqProps) => { return (
FAQ
    - {faqData.map(({ question, answer }, index) => ( + {questions.map(({ question, answer }, index) => (
  1. {index + 1}. {question} From 5b3503cd784a8f0c5edf3a29b8efa3c7c0cb4182 Mon Sep 17 00:00:00 2001 From: YulikK Date: Thu, 23 Jan 2025 15:02:44 +0100 Subject: [PATCH 02/24] refactor: 754 - add format activities --- dev-data/about-course.data.tsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/dev-data/about-course.data.tsx b/dev-data/about-course.data.tsx index 2733d43a2..6d37034e9 100644 --- a/dev-data/about-course.data.tsx +++ b/dev-data/about-course.data.tsx @@ -228,8 +228,7 @@ const reactEn: AboutCourseInfo[] = javaScriptEN().map((item) => { ...item, info: (

    - Throughout the course, we mostly use - {' '} + Throughout the course, we mostly use{' '} Discord chat @@ -255,7 +254,7 @@ const shortTrack: AboutCourseInfo[] = [ { id: 5, title: 'Format', - info: 'Group training (up to 20 participants per group), self-study with provided materials, regular Q&A sessions, mock interviews, intensive practice, and a final project.', + info: 'Group training (up to 20 participants per group), self-study with provided materials, regular Q&A sessions, mock interviews, intensive practice, and a final project. Activities can be conducted both online and offline', icon: paperIcon, }, { From e35ee0a4c29bf26814a8335cd88c675773961ef0 Mon Sep 17 00:00:00 2001 From: YulikK Date: Thu, 23 Jan 2025 15:03:26 +0100 Subject: [PATCH 03/24] refactor: 754 - lint fix --- dev-data/about-course.data.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dev-data/about-course.data.tsx b/dev-data/about-course.data.tsx index 6d37034e9..0a4f51fcd 100644 --- a/dev-data/about-course.data.tsx +++ b/dev-data/about-course.data.tsx @@ -228,7 +228,8 @@ const reactEn: AboutCourseInfo[] = javaScriptEN().map((item) => { ...item, info: (

    - Throughout the course, we mostly use{' '} + Throughout the course, we mostly use + {' '} Discord chat From 59b7ebe6e1d969b4e6106bae9f74239df4829561 Mon Sep 17 00:00:00 2001 From: YulikK Date: Fri, 24 Jan 2025 09:55:50 +0100 Subject: [PATCH 04/24] refactor: 754 - texts update --- dev-data/about-course.data.tsx | 5 ++--- dev-data/faq.data.ts | 16 +++++++--------- dev-data/required.data.ts | 8 +++----- dev-data/short-track-path.data.ts | 4 ++-- dev-data/training-program.data.tsx | 2 +- 5 files changed, 15 insertions(+), 20 deletions(-) diff --git a/dev-data/about-course.data.tsx b/dev-data/about-course.data.tsx index 0a4f51fcd..d22edb012 100644 --- a/dev-data/about-course.data.tsx +++ b/dev-data/about-course.data.tsx @@ -228,8 +228,7 @@ const reactEn: AboutCourseInfo[] = javaScriptEN().map((item) => { ...item, info: (

    - Throughout the course, we mostly use - {' '} + Throughout the course, we mostly use{' '} Discord chat @@ -279,7 +278,7 @@ const shortTrack: AboutCourseInfo[] = [ { id: 4, title: 'Certificate', - info: 'After successful completion of the course, students will receive an electronic certificate.', + info: 'After successful completion of the course, students will receive an digital certificate.', icon: awardIcon, }, ]; diff --git a/dev-data/faq.data.ts b/dev-data/faq.data.ts index bfc68eb3c..3e6b6013a 100644 --- a/dev-data/faq.data.ts +++ b/dev-data/faq.data.ts @@ -1,9 +1,6 @@ export type FaqDataType = { question: string; - answer: string | { id: number; - text: string; - title: string; - link: string; }[]; + answer: string | { id: number; text: string; title: string; link: string }[]; }; export const faqData: FaqDataType[] = [ { @@ -87,21 +84,22 @@ export const faqDataShortTrack: FaqDataType[] = [ answer: [ { id: 0, - text: 'You can prepare for the interview with this list of topics and questions', + text: 'You can prepare for the interview with this list of topics and questions ', title: 'topics and questions', link: 'https://github.com/rolling-scopes-school/epam-short-track/tree/main/screening', }, ], }, { - question: 'If I’m selected for JS Short Track, can I combine it with the classic Stage#2?', + question: + 'If I’m selected for the JS Short Track, can I also continue with the classic Stage #2 and take both courses at the same time?', answer: - 'No. If you are selected for JS Short Track, combining it with the classic Stage#2 is not possible. You will need to choose one direction.', + 'No, you cannot take the JS Short Track alongside the classic Stage #2. You will need to choose one path.', }, { question: - 'If I’m not accepted for the JS Short Track course after the interview, can I continue with the JS Stage#2 course?', + 'If I’m not accepted into the JS Short Track course after the interview, can I continue with the JS Stage #2 course?', answer: - 'Yes, if you don’t pass the selection for JS Short Track, you can continue your studies in JS Stage#2 ', + 'Yes, if you are not selected for the JS Short Track, you can continue your studies in JS Stage #2. ', }, ]; diff --git a/dev-data/required.data.ts b/dev-data/required.data.ts index d84edab10..83e3b9118 100644 --- a/dev-data/required.data.ts +++ b/dev-data/required.data.ts @@ -363,18 +363,16 @@ export const courseDataMap: CourseMap = { 'Citizenship of Lithuania or Latvia (Lietuvos Respublikos pilietybė)', 'Permanent Residence Permit (Nuolatinis leidimas gyventi)', 'Lithuanian EU Blue Card (ES mėlynoji kortelė)', - 'Temporary Residence Permit with work rights (Laikinas leidimas gyventi su teise dirbti)', + 'Temporary Residence Permit with the right to work (Laikinas leidimas gyventi su teise dirbti)', ], }, { - title: 'Turkish document requirements::', + title: 'Turkish document requirements:', description: ['Turkish citizens'], }, { title: 'Croatia, Bulgaria, Hungary, Romania, Serbia:', - description: [ - 'employment is theoretically possible depending on your documents and experience', - ], + description: ['employment might be possible depending on your documents and experience'], }, ], }, diff --git a/dev-data/short-track-path.data.ts b/dev-data/short-track-path.data.ts index 9b432e29d..f29790f7b 100644 --- a/dev-data/short-track-path.data.ts +++ b/dev-data/short-track-path.data.ts @@ -23,14 +23,14 @@ export const shortTrackPath: JSPath[] = [ id: 3, title: 'Step 3', description: - 'Join a team of 12-20 people under the guidance of a mentor. self-study with provided materials, regular Q&A sessions, mock interviews, intensive practice, and a final project.', + 'Join a team of 12-20 people under the guidance of a mentor. Self-study with provided materials, regular Q&A sessions, mock interviews, intensive practice, and a final project.', imageSrc: stage2, }, { id: 4, title: 'Step 4', description: - 'At the end of the first month of course, you will decide on a framework with your mentor. Approximate ratio: 60% React / 40% Angular', + 'At the end of the first month of the course, you will decide on a framework with your mentor. Approximate ratio: 60% React / 40% Angular', imageSrc: reactAngular, }, { diff --git a/dev-data/training-program.data.tsx b/dev-data/training-program.data.tsx index bbcabb44e..22fb8827f 100644 --- a/dev-data/training-program.data.tsx +++ b/dev-data/training-program.data.tsx @@ -310,7 +310,7 @@ export const contentMap: ContentMap = { , We are launching the Short Track now because new project positions are becoming available, - and we want to help you update your skills and prepare for interviews at a fast pace to be + and we want to help you improve your skills and prepare for interviews at a fast pace to be ready by April. , Date: Fri, 24 Jan 2025 09:56:37 +0100 Subject: [PATCH 05/24] refactor: 754 - lint fix --- dev-data/about-course.data.tsx | 3 ++- dev-data/faq.data.ts | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/dev-data/about-course.data.tsx b/dev-data/about-course.data.tsx index d22edb012..ff1ed0a1f 100644 --- a/dev-data/about-course.data.tsx +++ b/dev-data/about-course.data.tsx @@ -228,7 +228,8 @@ const reactEn: AboutCourseInfo[] = javaScriptEN().map((item) => { ...item, info: (

    - Throughout the course, we mostly use{' '} + Throughout the course, we mostly use + {' '} Discord chat diff --git a/dev-data/faq.data.ts b/dev-data/faq.data.ts index 3e6b6013a..541119ebf 100644 --- a/dev-data/faq.data.ts +++ b/dev-data/faq.data.ts @@ -1,6 +1,9 @@ export type FaqDataType = { question: string; - answer: string | { id: number; text: string; title: string; link: string }[]; + answer: string | { id: number; + text: string; + title: string; + link: string; }[]; }; export const faqData: FaqDataType[] = [ { From 7bec9fa4cf7ec0d2eecbb840bb2207e23a53697e Mon Sep 17 00:00:00 2001 From: YulikK Date: Fri, 24 Jan 2025 12:00:50 +0100 Subject: [PATCH 06/24] refactor: 754 - update Curriculum steps --- src/widgets/member-activity/ui/member-activity.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/widgets/member-activity/ui/member-activity.tsx b/src/widgets/member-activity/ui/member-activity.tsx index be61e9c48..5c98be845 100644 --- a/src/widgets/member-activity/ui/member-activity.tsx +++ b/src/widgets/member-activity/ui/member-activity.tsx @@ -50,7 +50,7 @@ export const LangContext = createContext('en'); export const MemberActivity = ({ path, type, activities, lang = 'en' }: StudyPathProps) => { let coursesPath = dataProviders[path]; - const isAngularOrAwsDev = path === 'angular' || path === 'awsDev'; + const isAngularOrAwsDev = path === 'angular' || path === 'awsDev' || path === 'shortTrack'; let title = isAngularOrAwsDev ? 'Course Curriculum' : localizedContent[lang].title; @@ -58,6 +58,9 @@ export const MemberActivity = ({ path, type, activities, lang = 'en' }: StudyPat ? 'This program will have theory and practice on the following topic:' : localizedContent[lang].paragraph; + paragraph = + path === 'shortTrack' ? 'The course program will consist of the following steps' : paragraph; + if (path === ROUTES.MENTORSHIP && activities) { title = mentorsActivityData[lang].header; paragraph = mentorsActivityData[lang].info; From a02d9b02b743601e0a149a0fece49babea5ca086 Mon Sep 17 00:00:00 2001 From: YulikK Date: Tue, 29 Apr 2025 13:42:59 +0200 Subject: [PATCH 07/24] docs: 754 - translate content to Russian for localization --- dev-data/training-program.data.tsx | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/dev-data/training-program.data.tsx b/dev-data/training-program.data.tsx index 43990ea4c..ae34bdaa9 100644 --- a/dev-data/training-program.data.tsx +++ b/dev-data/training-program.data.tsx @@ -295,25 +295,26 @@ export const contentMap: ContentMap = { image: awsDevImg, }, [COURSE_TITLES.SHORT_TRACK]: { - title: 'About the Opportunities', + title: 'О возможностях', content: [ - This a program designed for students who already possess strong foundational knowledge of - JavaScript/TypeScript and want to quickly level up to meet the requirements for employment - at EPAM. + Эта программа предназначена для студентов, которые уже обладают глубокими базовыми знаниями + JavaScript/TypeScript и хотят быстро повысить свой уровень для соответствия требованиям + трудоустройства в EPAM. , - We are launching the Short Track now because new project positions are becoming available, - and we want to help you improve your skills and prepare for interviews at a fast pace to be - ready by April. + Мы запускаем программу Short Track, когда в EPAM открываются вакансии Junior FE + разработчиков в разных локациях. Наша цель - помочь вам улучшить навыки и подготовиться к + собеседованиям в ускоренном режиме, чтобы быть готовыми всего за 3 месяца. , , ], From 56f8634af294fe479fee13963d4260f9867cd8cc Mon Sep 17 00:00:00 2001 From: YulikK Date: Tue, 29 Apr 2025 14:06:29 +0200 Subject: [PATCH 08/24] docs: 754 - add localized content for SHORT_TRACK course --- dev-data/about-course.data.tsx | 25 +++++++++---------- .../certification/ui/certification.tsx | 6 +++++ 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/dev-data/about-course.data.tsx b/dev-data/about-course.data.tsx index bd586c7f6..19c2ac199 100644 --- a/dev-data/about-course.data.tsx +++ b/dev-data/about-course.data.tsx @@ -45,7 +45,7 @@ export const introLocalizedContent = { [COURSE_TITLES.AWS_FUNDAMENTALS]: enIntro, [COURSE_TITLES.AWS_CLOUD_DEVELOPER]: enIntro, [COURSE_TITLES.AWS_DEVOPS]: enIntro, - [COURSE_TITLES.SHORT_TRACK]: enIntro, + [COURSE_TITLES.SHORT_TRACK]: ruIntro, }; const listData = { @@ -226,8 +226,7 @@ const reactEn: AboutCourseInfo[] = javaScriptEN().map((item) => { ...item, info: (

    - Throughout the course, we mostly use - {' '} + Throughout the course, we mostly use{' '} Discord chat @@ -252,32 +251,32 @@ const awsDevops: AboutCourseInfo[] = [ const shortTrack: AboutCourseInfo[] = [ { id: 5, - title: 'Format', - info: 'Group training (up to 20 participants per group), self-study with provided materials, regular Q&A sessions, mock interviews, intensive practice, and a final project. Activities can be conducted both online and offline', + title: 'Формат', + info: 'Групповое обучение (до 20 участников в группе), самостоятельное изучение предоставленных материалов, регулярные Q&A сессии два раза в неделю, кросс-интервью каждую неделю, пробные собеседования с ментором каждые две недели, интенсивная практика и финальный проект на React или Angular. Время обучения около 40 часов в неделю. Занятия могут проходить как онлайн, так и офлайн.', icon: paperIcon, }, { id: 1, - title: 'Focus', - info: 'React or Angular. The specific direction for each student will be determined closer to the end of the first month of training', + title: 'Направление', + info: 'React или Angular. Конкретное направление для каждого студента будет определено ближе к концу первого месяца обучения', icon: planetIcon, }, { id: 2, - title: 'EPAM Mentors and Experts', - info: 'Mentors and experts from EPAM will assist in the learning process and task reviews.', + title: 'Менторы и эксперты EPAM', + info: 'Менторы и эксперты из EPAM будут помогать в процессе обучения и проверке заданий.', icon: personIcon, }, { id: 3, - title: 'Duration', - info: 'The course runs for 3 months, with interviews at EPAM planned by April.', + title: 'Длительность', + info: 'Курс длится около 3 месяцев, собеседования в EPAM запланированы сразу после окончания курса.', icon: noteIcon, }, { id: 4, - title: 'Certificate', - info: 'After successful completion of the course, students will receive an digital certificate.', + title: 'Сертификат', + info: 'После успешного окончания курса студенты получат электронный сертификат.', icon: awardIcon, }, ]; diff --git a/src/widgets/certification/ui/certification.tsx b/src/widgets/certification/ui/certification.tsx index cec7a6d9e..397a75acb 100644 --- a/src/widgets/certification/ui/certification.tsx +++ b/src/widgets/certification/ui/certification.tsx @@ -23,6 +23,12 @@ const localizedContent = { 'Чтобы получить сертификат о прохождении курса вам необходимо набрать 70% от результата TOP-1 студента. Сертификат является признанием вашего усердного труда и преданности делу.', secondParagraph: '', }, + [COURSE_TITLES.SHORT_TRACK]: { + title: 'Сертификат', + firstParagraph: + 'Чтобы получить сертификат о прохождении курса вам необходимо набрать 70% от результата TOP-1 студента. Сертификат является признанием вашего усердного труда и преданности делу.', + secondParagraph: '', + }, }; type LocalizedContentKey = keyof typeof localizedContent; From 199871181f37bf39f99556f47430d71fca4203f6 Mon Sep 17 00:00:00 2001 From: YulikK Date: Tue, 29 Apr 2025 14:42:13 +0200 Subject: [PATCH 09/24] docs: 754 - update section intro and step descriptions to Russian --- dev-data/study-path.data.ts | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/dev-data/study-path.data.ts b/dev-data/study-path.data.ts index 11ed9acde..e28cc926b 100644 --- a/dev-data/study-path.data.ts +++ b/dev-data/study-path.data.ts @@ -968,88 +968,89 @@ export const studyPath: Record = { }, 'short-track': { sectionTitle: 'Short Track', - sectionIntro: 'This program will have theory and practice on the following topic:', + sectionIntro: + 'Интенсивная программа подготовки для опытных разработчиков, нацеленная на быстрое развитие навыков до уровня, необходимого для успешного трудоустройства. Программа включает в себя следующие этапы:', stages: [ { id: 1, - title: 'Step 1', + title: 'Шаг 1', intro: '', modules: [ { id: 1, - text: 'Fill out the application form by January 31. Expect an invitation for an interview. If there is a large number of applicants, there may be an additional test assignment.', + text: 'Подача заявки и предварительный отбор. При большом количестве заявок может быть назначено дополнительное тестовое задание.', links: [], marked: false, }, ], image: { src: feJsStage1, - alt: 'student works', + alt: 'студенты за работой', className: 'stage-image', }, }, { id: 2, - title: 'Step 2', + title: 'Шаг 2', intro: '', modules: [ { id: 1, - text: 'Entry Interviews: Interviews start on January 27 (to ensure all interviews are completed before Stage#2 begins on February 11). Expect an invitation to register for the course', + text: 'Вступительные технические собеседования для оценки текущего уровня знаний и определения готовности к интенсивному обучению.', links: [], marked: false, }, ], image: { src: feJsStage3, - alt: 'student works', + alt: 'студенты за работой', className: 'stage-image', }, }, { id: 3, - title: 'Step 3', + title: 'Шаг 3', intro: '', modules: [ { id: 1, - text: 'Join a team of 12-20 people under the guidance of a mentor. Self-study with provided materials, regular Q&A sessions, mock interviews, intensive practice, and a final project.', + text: 'Присоединитесь к команде из 12-20 человек под руководством ментора. Самостоятельное обучение с предоставленными материалами, регулярные Q&A сессии, пробные собеседования и интенсивная практика.', links: [], marked: false, }, ], image: { src: feJsStage2, - alt: 'working students', + alt: 'студенты за работой', className: 'stage-image', }, }, { id: 4, - title: 'Step 4', + title: 'Шаг 4', intro: '', modules: [ { id: 1, - text: 'At the end of the first month of the course, you will decide on a framework with your mentor. Approximate ratio: 60% React / 40% Angular', + text: 'В конце первого месяца обучения вы вместе с ментором определитесь с фреймворком. Примерное соотношение: 60% React / 40% Angular.', links: [], marked: false, }, ], image: { src: ReactAngIcon, - alt: 'react and angular logo', + alt: 'логотипы react и angular', className: 'stage-image', }, }, { id: 5, - title: 'Step 5', + title: 'Шаг 5', intro: '', modules: [ { id: 1, - text: 'Development of the final project in a team of 3 people under the guidance of a mentor', + text: 'Разработка финального проекта индивидуально или в команде из 3 человек (зависит от задания) под руководством ментора.', links: [], marked: false, }, From 9273847388e8fffbdedf71c993f660538dc531d3 Mon Sep 17 00:00:00 2001 From: YulikK Date: Tue, 29 Apr 2025 15:00:56 +0200 Subject: [PATCH 10/24] docs: 754 - translate course requirements to Russian --- dev-data/required.data.ts | 40 +++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/dev-data/required.data.ts b/dev-data/required.data.ts index a22692ad6..63cc060f8 100644 --- a/dev-data/required.data.ts +++ b/dev-data/required.data.ts @@ -336,42 +336,42 @@ export const courseDataMap: CourseMap = { ], }, [COURSE_TITLES.SHORT_TRACK]: { - title: 'What is required for course?', + title: 'Что требуется для прохождения курса?', knowBefore: { - title: 'Required before the start', + title: 'Необходимо до начала', description: [ - 'You are a current Stage#1 student or a graduate/participant of any previous RS School batches.', - 'You have solid front-end development skills and an English proficiency level of at least B1 (Intermediate).', - 'You are ready to dedicate at least 20-40 hours per week to studying.', - 'You reside in one of the countries below: Georgia, Uzbekistan, Kazakhstan, Kyrgyzstan, Armenia, Poland, Lithuania, Turkey, Croatia, Bulgaria, Hungary, Romania, Serbia', + 'Вы являетесь текущим студентом Stage#1 или выпускником/участником предыдущих наборов RS School.', + 'У вас есть твёрдые навыки front-end разработки и уровень английского языка не ниже B1 (Intermediate).', + 'Вы готовы уделять обучению как минимум 20-40 часов в неделю.', + 'Вы проживаете в одной из следующих стран: Грузия, Узбекистан, Казахстан, Кыргызстан, Армения, Польша, Литва, Турция, Хорватия, Болгария, Венгрия, Румыния, Сербия', ], }, willLearn: [ { - title: 'Poland document requirements:', + title: 'Требования к документам для Польши:', description: [ - 'EU Long-Term Residence Permit (Karta rezydenta długoterminowego UE)', - 'Permanent Residence Card (Karta stałego pobytu)', - 'Polish Citizenship (Obywatelstwo polskie)', - 'Temporary Residence Card (Karta czasowego pobytu) with a work market access note (dostęp do rynku pracy)', + 'Разрешение на долгосрочное проживание в ЕС (Karta rezydenta długoterminowego UE)', + 'Карта постоянного проживания (Karta stałego pobytu)', + 'Польское гражданство (Obywatelstwo polskie)', + 'Карта временного проживания (Karta czasowego pobytu) с отметкой о доступе к рынку труда (dostęp do rynku pracy)', ], }, { - title: 'Lithuania document requirements:', + title: 'Требования к документам для Литвы:', description: [ - 'Citizenship of Lithuania or Latvia (Lietuvos Respublikos pilietybė)', - 'Permanent Residence Permit (Nuolatinis leidimas gyventi)', - 'Lithuanian EU Blue Card (ES mėlynoji kortelė)', - 'Temporary Residence Permit with the right to work (Laikinas leidimas gyventi su teise dirbti)', + 'Гражданство Литвы или Латвии (Lietuvos Respublikos pilietybė)', + 'Разрешение на постоянное проживание (Nuolatinis leidimas gyventi)', + 'Литовская голубая карта ЕС (ES mėlynoji kortelė)', + 'Разрешение на временное проживание с правом на работу (Laikinas leidimas gyventi su teise dirbti)', ], }, { - title: 'Turkish document requirements:', - description: ['Turkish citizens'], + title: 'Требования к документам для Турции:', + description: ['Граждане Турции'], }, { - title: 'Croatia, Bulgaria, Hungary, Romania, Serbia:', - description: ['employment might be possible depending on your documents and experience'], + title: 'Хорватия, Болгария, Венгрия, Румыния, Сербия:', + description: ['Трудоустройство возможно в зависимости от ваших документов и опыта'], }, ], }, From 6552985395bf07518cfd08f77b0889f95b08037d Mon Sep 17 00:00:00 2001 From: YulikK Date: Tue, 29 Apr 2025 15:05:30 +0200 Subject: [PATCH 11/24] docs: 754 - update module text for clarity and detail --- dev-data/study-path.data.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dev-data/study-path.data.ts b/dev-data/study-path.data.ts index e28cc926b..41780213d 100644 --- a/dev-data/study-path.data.ts +++ b/dev-data/study-path.data.ts @@ -978,7 +978,7 @@ export const studyPath: Record = { modules: [ { id: 1, - text: 'Подача заявки и предварительный отбор. При большом количестве заявок может быть назначено дополнительное тестовое задание.', + text: 'Заполните форму заявки. Ожидайте приглашение на вступительное собеседование. При большом количестве заявок может быть назначено дополнительное тестовое задание.', links: [], marked: false, }, @@ -996,7 +996,7 @@ export const studyPath: Record = { modules: [ { id: 1, - text: 'Вступительные технические собеседования для оценки текущего уровня знаний и определения готовности к интенсивному обучению.', + text: 'Пройдите вступительное собеседование. После завершения всех собеседований будут объявлены результаты. В случае зачисления в группу, вы получите приглашение для регистрации на курс.', links: [], marked: false, }, From e2569f82739059d3b7496c31069d9bafa5296331 Mon Sep 17 00:00:00 2001 From: YulikK Date: Tue, 29 Apr 2025 15:34:12 +0200 Subject: [PATCH 12/24] docs: 754 - update course description for clarity and accuracy --- dev-data/about-course.data.tsx | 2 +- dev-data/study-path.data.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dev-data/about-course.data.tsx b/dev-data/about-course.data.tsx index 19c2ac199..fbd76db7b 100644 --- a/dev-data/about-course.data.tsx +++ b/dev-data/about-course.data.tsx @@ -252,7 +252,7 @@ const shortTrack: AboutCourseInfo[] = [ { id: 5, title: 'Формат', - info: 'Групповое обучение (до 20 участников в группе), самостоятельное изучение предоставленных материалов, регулярные Q&A сессии два раза в неделю, кросс-интервью каждую неделю, пробные собеседования с ментором каждые две недели, интенсивная практика и финальный проект на React или Angular. Время обучения около 40 часов в неделю. Занятия могут проходить как онлайн, так и офлайн.', + info: 'Групповое обучение (до 20 участников в группе), самостоятельное изучение предоставленных материалов, регулярные Q&A сессии, кросс-интервью каждую неделю, пробные собеседования с ментором, интенсивная практика и финальный проект на React или Angular. На обучение вам потребуется ориентировочно 20-40 часов в неделю. Занятия могут проходить как онлайн, так и офлайн.', icon: paperIcon, }, { diff --git a/dev-data/study-path.data.ts b/dev-data/study-path.data.ts index 41780213d..ddb81dfee 100644 --- a/dev-data/study-path.data.ts +++ b/dev-data/study-path.data.ts @@ -1014,7 +1014,7 @@ export const studyPath: Record = { modules: [ { id: 1, - text: 'Присоединитесь к команде из 12-20 человек под руководством ментора. Самостоятельное обучение с предоставленными материалами, регулярные Q&A сессии, пробные собеседования и интенсивная практика.', + text: 'Присоединитесь к команде из 12-20 человек под руководством ментора. Активно участвуйте во всех мероприятиях: самостоятельное изучение предоставленных материалов, регулярные Q&A сессии, кросс-интервью, пробные собеседования с ментором и интенсивная практика.', links: [], marked: false, }, From f69ac5932427bbde0368fb816b46a0ee87b0025e Mon Sep 17 00:00:00 2001 From: YulikK Date: Wed, 30 Apr 2025 09:42:52 +0200 Subject: [PATCH 13/24] refactor: 754 - replace hardcoded trainers with dynamic loading --- dev-data/short-track.data.ts | 25 ------------------------- src/entities/course/constants.ts | 3 +-- src/views/short-track.tsx | 6 ++++-- 3 files changed, 5 insertions(+), 29 deletions(-) delete mode 100644 dev-data/short-track.data.ts diff --git a/dev-data/short-track.data.ts b/dev-data/short-track.data.ts deleted file mode 100644 index dca5148f7..000000000 --- a/dev-data/short-track.data.ts +++ /dev/null @@ -1,25 +0,0 @@ -import type { Trainer } from '@/entities/trainer'; -import aSerhiyenia from '@/shared/assets/mentors/a-serhiyenia.webp'; -import marharytaMalets from '@/shared/assets/mentors/m-malets.webp'; -import nataliaLebedevaImg from '@/shared/assets/mentors/n-lebedeva.webp'; - -export const shortTrackTrainers: Trainer[] = [ - { - name: 'Aleh Serhiyenia', - role: 'Front-End Developer', - bio: 'Aleh Serhiyenia works at EPAM Systems, developing web applications using Angular. He was always interested in technology and computers. Aleh received his higher education at BSUIR. For a long time, he engaged in production automation. Then he became interested in graphic design, the development of banners, logos, signs, etc. Aleh has always had a passion for programming. He passed RS School and then EPAM Lab. Now Aleh is ready to share his experience and expertise with RS School students.', - photo: aSerhiyenia, - }, - { - name: 'Marharyta Malets', - role: 'EPAM, Software Engineer', - bio: 'Marharyta graduated from RS School in July 2021 and by March 2022, she became a mentor for the first time. Since then, RS School has become an essential part of her life. She is sure that she is growing and learning with her mentees. Her favorite activity is participating in technical interviews. However, she is always open to new experiences and learning opportunities.', - photo: marharytaMalets, - }, - { - name: 'Natalia Lebedeva', - role: 'EPAM, Junior Software Engineer', - bio: 'Natalia trained at RS School, got into the spirit of the school and became its mentor and contributor. After passing through the EPAM lab, she realized her dream and became a developer. Loves spending time in the company of like-minded people and organizes RS School community meetings in Almaty. Wants to help others on their difficult path.', - photo: nataliaLebedevaImg, - }, -]; diff --git a/src/entities/course/constants.ts b/src/entities/course/constants.ts index 0b9615d25..5f24a2ca8 100644 --- a/src/entities/course/constants.ts +++ b/src/entities/course/constants.ts @@ -14,6 +14,5 @@ export const API_COURSES_IDS_DICTIONARY: Record = { [COURSE_TITLES.JS_RU]: '45GfCeWyEljTfHzUgnQPod', [COURSE_TITLES.REACT]: '22u5y3ir02LMShH6AyNOsE', [COURSE_TITLES.JS_EN]: 'EiDyAqKQQpcauf4z8htAb', - // TODO: add short track id - [COURSE_TITLES.SHORT_TRACK]: '', + [COURSE_TITLES.SHORT_TRACK]: 'pb5aNV0EvQpF3EMiSTS7w', }; diff --git a/src/views/short-track.tsx b/src/views/short-track.tsx index 940830e90..1ee5db697 100644 --- a/src/views/short-track.tsx +++ b/src/views/short-track.tsx @@ -1,5 +1,5 @@ import { faqDataShortTrack } from '../../dev-data/faq.data'; -import { shortTrackTrainers } from '../../dev-data/short-track.data'; +import { trainerStore } from '@/entities/trainer'; import { AboutCourse } from '@/widgets/about-course'; import { Breadcrumbs } from '@/widgets/breadcrumbs'; import { Certification } from '@/widgets/certification'; @@ -15,6 +15,8 @@ type JavaScriptEnProps = { courseName: CourseNames['SHORT_TRACK']; }; export const ShortTrack = async ({ courseName }: JavaScriptEnProps) => { + const trainers = await trainerStore.loadTrainers(courseName); + return ( <> @@ -25,7 +27,7 @@ export const ShortTrack = async ({ courseName }: JavaScriptEnProps) => { - + {trainers && } ); }; From daf775979b2fa08de85695fdc772ee6e9c4b8063 Mon Sep 17 00:00:00 2001 From: YulikK Date: Wed, 30 Apr 2025 13:05:47 +0200 Subject: [PATCH 14/24] refactor: 754 - update short-track icon and translate faq --- dev-data/courses.data.ts | 7 ++- dev-data/faq.data.ts | 28 +++++---- dev-data/index.ts | 2 +- src/shared/assets/icons/st-icon.svg | 90 +++++++++++++++++++++++++++++ src/views/short-track.tsx | 3 +- 5 files changed, 112 insertions(+), 18 deletions(-) create mode 100644 src/shared/assets/icons/st-icon.svg diff --git a/dev-data/courses.data.ts b/dev-data/courses.data.ts index 02931ae86..7343c7bcb 100644 --- a/dev-data/courses.data.ts +++ b/dev-data/courses.data.ts @@ -1,7 +1,6 @@ import { ROUTES } from '@/core/const'; import type { Course } from '@/entities/course'; import angular from '@/shared/assets/icons/angular.svg'; -import shortTrack from '@/shared/assets/icons/short-track.svg'; import awsBlack from '@/shared/assets/icons/aws-black.svg'; import awsWhite from '@/shared/assets/icons/aws-white.svg'; import html5 from '@/shared/assets/icons/html5.svg'; @@ -9,6 +8,8 @@ import javascriptBlack from '@/shared/assets/icons/javascript-black.svg'; import javascript from '@/shared/assets/icons/javascript.svg'; import nodejs from '@/shared/assets/icons/node-js.svg'; import react from '@/shared/assets/icons/react.svg'; +import shortTrack from '@/shared/assets/icons/short-track.svg'; +import shortTrackIcon from '@/shared/assets/icons/st-icon.svg'; import { COURSE_LINKS, TO_BE_DETERMINED } from '@/shared/constants'; import { COURSE_TITLES } from 'data'; @@ -222,8 +223,8 @@ export const courses: Course[] = [ descriptionUrl: COURSE_LINKS.SHORT_TRACK, altTitle: COURSE_TITLES.SHORT_TRACK, iconSrc: shortTrack, - iconSmall: shortTrack, - iconFooter: shortTrack, + iconSmall: shortTrackIcon, + iconFooter: shortTrackIcon, secondaryIcon: shortTrack, startDate: TO_BE_DETERMINED, registrationEndDate: TO_BE_DETERMINED, diff --git a/dev-data/faq.data.ts b/dev-data/faq.data.ts index 94630eca7..4e9f4ac2e 100644 --- a/dev-data/faq.data.ts +++ b/dev-data/faq.data.ts @@ -63,41 +63,45 @@ export const preschoolFaqData: FaqData = [ export const faqDataShortTrack: FaqData = [ { - question: 'Where can I ask a question?', + question: 'Где можно задать вопрос?', answer: [ { id: 0, - text: 'Questions can be asked in ', - title: 'Telegram chanel', + text: 'Вопросы можно задать в ', + title: 'Telegram канале', link: 'https://t.me/epamJsShortTrack', }, ], }, { - question: 'Is it possible to take the course completely online?', - answer: 'All stages of training can be completed online.', + question: 'Возможно ли пройти курс полностью онлайн?', + answer: 'Все этапы обучения можно пройти онлайн. ', }, { - question: 'Is there a list of interview questions? What should I prepare for?', + question: 'Есть ли список вопросов для собеседования? К чему готовиться?', answer: [ { id: 0, - text: 'You can prepare for the interview with this list of topics and questions ', - title: 'topics and questions', + text: 'Вы можете подготовиться к собеседованию, используя этот список тем и вопросов ', + title: 'темы и вопросы', link: 'https://github.com/rolling-scopes-school/epam-short-track/tree/main/screening', }, ], }, { question: - 'If I’m selected for the JS Short Track, can I also continue with the classic Stage #2 and take both courses at the same time?', + 'Если меня выберут на курс Short Track, могу ли я параллельно продолжить обучение на Stage #2 и проходить оба курса одновременно?', answer: - 'No, you cannot take the JS Short Track alongside the classic Stage #2. You will need to choose one path.', + 'Нет, вы не можете проходить курс Short Track параллельно с другими курсами. Вам нужно выбрать один.', }, { question: - 'If I’m not accepted into the JS Short Track course after the interview, can I continue with the JS Stage #2 course?', + 'Если меня не примут на курс Short Track после собеседования, смогу ли я продолжить обучение на курсе JS Stage #2?', + answer: 'Да, если вас не выберут на Short Track, вы можете продолжить обучение на JS Stage #2.', + }, + { + question: 'На каком языке проходит обучение?', answer: - 'Yes, if you are not selected for the JS Short Track, you can continue your studies in JS Stage #2. ', + 'Все материалы и задания - на английском. Общение с кураторами, менторами и студентами будет в основном на русском. Некоторые интервью и крос-интревью будут на английском.', }, ]; diff --git a/dev-data/index.ts b/dev-data/index.ts index 37aa26957..54444be0f 100644 --- a/dev-data/index.ts +++ b/dev-data/index.ts @@ -48,6 +48,7 @@ export { courseStatus, heroCourseLocalized } from './hero-course.data'; export { courses } from './courses.data'; export { donateOptions } from './donate-options.data'; export { events } from './events.data'; +export { faqDataShortTrack, preschoolFaqData } from './faq.data'; export { generalMaterials } from './general.data'; export { heroPageData } from './hero-page.data'; export { mentorDocsData } from './mentor-docs.data'; @@ -58,7 +59,6 @@ export { mentorsWantedData } from './mentors-wanted.data'; export { mentorshipCourses, mentorshipCoursesDefault } from './mentorship.data'; export { merchData } from './merch.data'; export { picturesSocialMediaLinks } from './pictures.data'; -export { preschoolFaqData } from './faq.data'; export { principleCards } from './principle-cards.data'; export { requirementsData } from './requirements.data'; export { rsInNumbers } from './rs-in-numbers.data'; diff --git a/src/shared/assets/icons/st-icon.svg b/src/shared/assets/icons/st-icon.svg new file mode 100644 index 000000000..5fc3cdd68 --- /dev/null +++ b/src/shared/assets/icons/st-icon.svg @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<ST/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ST + + + diff --git a/src/views/short-track.tsx b/src/views/short-track.tsx index 1ee5db697..1a99bd7bf 100644 --- a/src/views/short-track.tsx +++ b/src/views/short-track.tsx @@ -1,4 +1,3 @@ -import { faqDataShortTrack } from '../../dev-data/faq.data'; import { trainerStore } from '@/entities/trainer'; import { AboutCourse } from '@/widgets/about-course'; import { Breadcrumbs } from '@/widgets/breadcrumbs'; @@ -9,7 +8,7 @@ import { Required } from '@/widgets/required'; import { StudyPath } from '@/widgets/study-path'; import { Trainers } from '@/widgets/trainers'; import { TrainingProgram } from '@/widgets/training-program'; -import { CourseNames } from 'data'; +import { CourseNames, faqDataShortTrack } from 'data'; type JavaScriptEnProps = { courseName: CourseNames['SHORT_TRACK']; From 18be70531d17125564fb8dc6c1dd97507d5c6597 Mon Sep 17 00:00:00 2001 From: YulikK Date: Wed, 30 Apr 2025 14:04:55 +0200 Subject: [PATCH 15/24] refactor: 754 - update short track icon references --- dev-data/courses.data.ts | 4 +-- src/shared/assets/icons/st.svg | 48 ++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 src/shared/assets/icons/st.svg diff --git a/dev-data/courses.data.ts b/dev-data/courses.data.ts index 7343c7bcb..9a51be39c 100644 --- a/dev-data/courses.data.ts +++ b/dev-data/courses.data.ts @@ -8,8 +8,8 @@ import javascriptBlack from '@/shared/assets/icons/javascript-black.svg'; import javascript from '@/shared/assets/icons/javascript.svg'; import nodejs from '@/shared/assets/icons/node-js.svg'; import react from '@/shared/assets/icons/react.svg'; -import shortTrack from '@/shared/assets/icons/short-track.svg'; import shortTrackIcon from '@/shared/assets/icons/st-icon.svg'; +import shortTrack from '@/shared/assets/icons/st.svg'; import { COURSE_LINKS, TO_BE_DETERMINED } from '@/shared/constants'; import { COURSE_TITLES } from 'data'; @@ -222,7 +222,7 @@ export const courses: Course[] = [ subTitle: null, descriptionUrl: COURSE_LINKS.SHORT_TRACK, altTitle: COURSE_TITLES.SHORT_TRACK, - iconSrc: shortTrack, + iconSrc: shortTrackIcon, iconSmall: shortTrackIcon, iconFooter: shortTrackIcon, secondaryIcon: shortTrack, diff --git a/src/shared/assets/icons/st.svg b/src/shared/assets/icons/st.svg new file mode 100644 index 000000000..b1eed629d --- /dev/null +++ b/src/shared/assets/icons/st.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 296eca2da0bb37917e5554bfc15c2586d035d6c4 Mon Sep 17 00:00:00 2001 From: YulikK Date: Wed, 30 Apr 2025 14:08:03 +0200 Subject: [PATCH 16/24] refactor: 754 - remove unused comment --- dev-data/widget-communication.data.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/dev-data/widget-communication.data.ts b/dev-data/widget-communication.data.ts index 66f10e600..0d63949e0 100644 --- a/dev-data/widget-communication.data.ts +++ b/dev-data/widget-communication.data.ts @@ -3,7 +3,6 @@ export const communicationText = { title: 'Communication', subTitle: 'Discord is the main communication channel in RS School', subTitleJs: 'RS School uses two main communication channels:', - // subTitleST: 'RS School uses two main communication channels:', firstParagraphFirstHalf: 'Here is link for the ', discordParagraphTextJs: ': Join the Discord server to see the latest news and chat with students.', From 45b757900a4efe11433cdb04e433791a02c6a6ac Mon Sep 17 00:00:00 2001 From: YulikK Date: Wed, 30 Apr 2025 14:09:50 +0200 Subject: [PATCH 17/24] refactor: 754 - format widget-communication.data.ts for readability --- dev-data/widget-communication.data.ts | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/dev-data/widget-communication.data.ts b/dev-data/widget-communication.data.ts index 0d63949e0..022f1d29b 100644 --- a/dev-data/widget-communication.data.ts +++ b/dev-data/widget-communication.data.ts @@ -4,19 +4,15 @@ export const communicationText = { subTitle: 'Discord is the main communication channel in RS School', subTitleJs: 'RS School uses two main communication channels:', firstParagraphFirstHalf: 'Here is link for the ', - discordParagraphTextJs: - ': Join the Discord server to see the latest news and chat with students.', + discordParagraphTextJs: ': Join the Discord server to see the latest news and chat with students.', discordLink: 'course Discord server', discordLinkJs: 'Discord', firstParagraphSecondHalf: ', where you can see latest news and chat with students.', - telegramParagraphTextJs: - ': You can also join the official Telegram channel for updates and discussions.', - discordNote: - 'Attention! In some countries, access to Discord requires the use of a VPN. If you are having trouble connecting, please try using a reliable VPN service.', + telegramParagraphTextJs: ': You can also join the official Telegram channel for updates and discussions.', + discordNote: 'Attention! In some countries, access to Discord requires the use of a VPN. If you are having trouble connecting, please try using a reliable VPN service.', secondParagraphFirstHalf: 'There are channels in ', telegramLink: 'Telegram', - secondParagraphSecondHalf: - ' for discussing events related to your location. For example, offline lectures or just informal chats among students from the same location.', + secondParagraphSecondHalf: ' for discussing events related to your location. For example, offline lectures or just informal chats among students from the same location.', thirdParagraphFirstHalf: 'Please read the information about communication in RS School in the ', rsDocsLink: 'RS Docs', thirdParagraphSecondHalf: ', where you can find rules, descriptions of channels, FAQ.', @@ -29,15 +25,12 @@ export const communicationText = { discordParagraphTextJs: '', discordLink: 'Дискорд сервер курса', discordLinkJs: '', - firstParagraphSecondHalf: - ', где вы можете посмотреть последние новости, задать вопросы и общаться со студентами.', + firstParagraphSecondHalf: ', где вы можете посмотреть последние новости, задать вопросы и общаться со студентами.', telegramParagraphTextJs: '', - discordNote: - 'Внимание! В некоторых странах для доступа к Discord требуется использование VPN. Если у вас возникают трудности с подключением, попробуйте использовать надёжный VPN-сервис.', + discordNote: 'Внимание! В некоторых странах для доступа к Discord требуется использование VPN. Если у вас возникают трудности с подключением, попробуйте использовать надёжный VPN-сервис.', secondParagraphFirstHalf: 'Также есть каналы в ', telegramLink: 'Телеграм', - secondParagraphSecondHalf: - ' для обсуждения мероприятий, относящихся к вашему городу. Например, офлайн лекции или просто для общения студентов из одной локации.', + secondParagraphSecondHalf: ' для обсуждения мероприятий, относящихся к вашему городу. Например, офлайн лекции или просто для общения студентов из одной локации.', thirdParagraphFirstHalf: 'Обязательно прочитайте информацию об общении в RS School в ', rsDocsLink: 'RS Docs', thirdParagraphSecondHalf: ', где вы можете найти правила, описание каналов, FAQ.', From a416f66f4d5ac62912e037af9e6aebce7eb9a5db Mon Sep 17 00:00:00 2001 From: YulikK Date: Wed, 30 Apr 2025 14:48:16 +0200 Subject: [PATCH 18/24] refactor: 754 - improve readability by formatting string concatenation --- dev-data/about-course.data.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dev-data/about-course.data.tsx b/dev-data/about-course.data.tsx index fbd76db7b..7c4da1847 100644 --- a/dev-data/about-course.data.tsx +++ b/dev-data/about-course.data.tsx @@ -226,7 +226,8 @@ const reactEn: AboutCourseInfo[] = javaScriptEN().map((item) => { ...item, info: (

    - Throughout the course, we mostly use{' '} + Throughout the course, we mostly use + {' '} Discord chat From 419361814102ec74bff820c615c94ef31f1a9d65 Mon Sep 17 00:00:00 2001 From: YulikK Date: Wed, 30 Apr 2025 21:31:09 +0200 Subject: [PATCH 19/24] refactor: 754 - update course requirements training program and about course details --- dev-data/about-course.data.tsx | 8 ++++---- dev-data/required.data.ts | 3 ++- dev-data/training-program.data.tsx | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/dev-data/about-course.data.tsx b/dev-data/about-course.data.tsx index 7c4da1847..f4a2cdc86 100644 --- a/dev-data/about-course.data.tsx +++ b/dev-data/about-course.data.tsx @@ -253,19 +253,19 @@ const shortTrack: AboutCourseInfo[] = [ { id: 5, title: 'Формат', - info: 'Групповое обучение (до 20 участников в группе), самостоятельное изучение предоставленных материалов, регулярные Q&A сессии, кросс-интервью каждую неделю, пробные собеседования с ментором, интенсивная практика и финальный проект на React или Angular. На обучение вам потребуется ориентировочно 20-40 часов в неделю. Занятия могут проходить как онлайн, так и офлайн.', + info: 'Групповое обучение (около 20 участников в группе), самостоятельное изучение предоставленных материалов, регулярные Q&A сессии, кросс-интервью каждую неделю, пробные собеседования с ментором, интенсивная практика и финальный проект на React или Angular. На обучение вам потребуется ориентировочно 20-40 часов в неделю. Занятия могут проходить как онлайн, так и офлайн.', icon: paperIcon, }, { id: 1, title: 'Направление', - info: 'React или Angular. Конкретное направление для каждого студента будет определено ближе к концу первого месяца обучения', + info: 'React и Angular. В процессе обучения вы будете изучать оба фреймворка, выполнять задания и проходить интервью по каждому из них.', icon: planetIcon, }, { id: 2, - title: 'Менторы и эксперты EPAM', - info: 'Менторы и эксперты из EPAM будут помогать в процессе обучения и проверке заданий.', + title: 'Менторы и эксперты', + info: 'Менторы и эксперты будут помогать в процессе обучения и проверять задания.', icon: personIcon, }, { diff --git a/dev-data/required.data.ts b/dev-data/required.data.ts index 63cc060f8..9a04055c0 100644 --- a/dev-data/required.data.ts +++ b/dev-data/required.data.ts @@ -342,6 +342,7 @@ export const courseDataMap: CourseMap = { description: [ 'Вы являетесь текущим студентом Stage#1 или выпускником/участником предыдущих наборов RS School.', 'У вас есть твёрдые навыки front-end разработки и уровень английского языка не ниже B1 (Intermediate).', + 'У вас есть базовые знания алгоритмов и структур данных, опыт решения алгоритмических задач.', 'Вы готовы уделять обучению как минимум 20-40 часов в неделю.', 'Вы проживаете в одной из следующих стран: Грузия, Узбекистан, Казахстан, Кыргызстан, Армения, Польша, Литва, Турция, Хорватия, Болгария, Венгрия, Румыния, Сербия', ], @@ -367,7 +368,7 @@ export const courseDataMap: CourseMap = { }, { title: 'Требования к документам для Турции:', - description: ['Граждане Турции'], + description: ['Гражданство Турецкой Республики'], }, { title: 'Хорватия, Болгария, Венгрия, Румыния, Сербия:', diff --git a/dev-data/training-program.data.tsx b/dev-data/training-program.data.tsx index ae34bdaa9..d045f0c0e 100644 --- a/dev-data/training-program.data.tsx +++ b/dev-data/training-program.data.tsx @@ -311,8 +311,8 @@ export const contentMap: ContentMap = { key="short track 03" data={[ 'В 2024 году EPAM принял на работу более 50 выпускников RS School. Мы надеемся удвоить это число в этом году, несмотря на нестабильный спрос. Проектные позиции появляются нерегулярно, и сложно предсказать точное количество вакансий.', + 'В апреле 2025 года был успешно завершен поток EPAM ST 2025Q1 для региона GUKKA и Europe. Уже в мае 2025 года выпускники проходят собеседования в лаборатории EPAM.', 'Исторически этот курс назывался "Short Track" (до 2022 года), но с тех пор рынок значительно изменился, и больше нет 100% гарантии, что вакансии будут доступны сразу после завершения Short Track.', - 'В апреле 2025 года был успешно завершен первый поток EPAM ST 2025Q1 для региона GUKKA. Уже в мае 2025 года выпускники проходят собеседования в лаборатории EPAM.', 'Тем не менее, мы стремимся обеспечить высочайший уровень подготовки, чтобы вы были готовы к любым собеседованиям. Большинство наших организаторов сами прошли эту программу и успешно присоединились к EPAM.', 'Вероятно, через месяц или два мы объявим о новом наборе заявок на программу Short Track.', ]} From d318d0c306f567d6517f059ec24341f56d347b3e Mon Sep 17 00:00:00 2001 From: YulikK Date: Wed, 30 Apr 2025 21:37:53 +0200 Subject: [PATCH 20/24] refactor: 754 - update program description --- dev-data/training-program.data.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-data/training-program.data.tsx b/dev-data/training-program.data.tsx index d045f0c0e..c27f42562 100644 --- a/dev-data/training-program.data.tsx +++ b/dev-data/training-program.data.tsx @@ -298,7 +298,7 @@ export const contentMap: ContentMap = { title: 'О возможностях', content: [ - Эта программа предназначена для студентов, которые уже обладают глубокими базовыми знаниями + Эта программа предназначена для студентов, которые уже обладают базовыми знаниями JavaScript/TypeScript и хотят быстро повысить свой уровень для соответствия требованиям трудоустройства в EPAM. , From 5bf7f4e2b38219ba8e02279a5b6166d134e0126c Mon Sep 17 00:00:00 2001 From: YulikK Date: Wed, 7 May 2025 20:18:03 +0200 Subject: [PATCH 21/24] refactor: 754 - update course titles and remove redundant assets --- dev-data/course-titles.data.ts | 2 +- dev-data/courses.data.ts | 3 +- dev-data/training-program.data.tsx | 3 +- src/shared/assets/icons/st.svg | 48 ---------------------------- src/widgets/breadcrumbs/constants.ts | 2 +- 5 files changed, 4 insertions(+), 54 deletions(-) delete mode 100644 src/shared/assets/icons/st.svg diff --git a/dev-data/course-titles.data.ts b/dev-data/course-titles.data.ts index 7280622c3..66e03004e 100644 --- a/dev-data/course-titles.data.ts +++ b/dev-data/course-titles.data.ts @@ -10,7 +10,7 @@ export const COURSE_TITLES = { AWS_FUNDAMENTALS: 'AWS Fundamentals', AWS_CLOUD_DEVELOPER: 'AWS Cloud Developer', AWS_DEVOPS: 'AWS DevOps', - SHORT_TRACK: 'RS EPAM Short Track', + SHORT_TRACK: 'Short Track', } as const; export const AWS_FUNDAMENTALS_BADGE = `${COURSE_TITLES.AWS_FUNDAMENTALS} badge` as const; diff --git a/dev-data/courses.data.ts b/dev-data/courses.data.ts index 9a51be39c..c9f69ba10 100644 --- a/dev-data/courses.data.ts +++ b/dev-data/courses.data.ts @@ -9,7 +9,6 @@ import javascript from '@/shared/assets/icons/javascript.svg'; import nodejs from '@/shared/assets/icons/node-js.svg'; import react from '@/shared/assets/icons/react.svg'; import shortTrackIcon from '@/shared/assets/icons/st-icon.svg'; -import shortTrack from '@/shared/assets/icons/st.svg'; import { COURSE_LINKS, TO_BE_DETERMINED } from '@/shared/constants'; import { COURSE_TITLES } from 'data'; @@ -225,7 +224,7 @@ export const courses: Course[] = [ iconSrc: shortTrackIcon, iconSmall: shortTrackIcon, iconFooter: shortTrackIcon, - secondaryIcon: shortTrack, + secondaryIcon: shortTrackIcon, startDate: TO_BE_DETERMINED, registrationEndDate: TO_BE_DETERMINED, language: 'ru', diff --git a/dev-data/training-program.data.tsx b/dev-data/training-program.data.tsx index c27f42562..6ec8dccc4 100644 --- a/dev-data/training-program.data.tsx +++ b/dev-data/training-program.data.tsx @@ -312,8 +312,7 @@ export const contentMap: ContentMap = { data={[ 'В 2024 году EPAM принял на работу более 50 выпускников RS School. Мы надеемся удвоить это число в этом году, несмотря на нестабильный спрос. Проектные позиции появляются нерегулярно, и сложно предсказать точное количество вакансий.', 'В апреле 2025 года был успешно завершен поток EPAM ST 2025Q1 для региона GUKKA и Europe. Уже в мае 2025 года выпускники проходят собеседования в лаборатории EPAM.', - 'Исторически этот курс назывался "Short Track" (до 2022 года), но с тех пор рынок значительно изменился, и больше нет 100% гарантии, что вакансии будут доступны сразу после завершения Short Track.', - 'Тем не менее, мы стремимся обеспечить высочайший уровень подготовки, чтобы вы были готовы к любым собеседованиям. Большинство наших организаторов сами прошли эту программу и успешно присоединились к EPAM.', + 'Тем не менее, мы стремимся обеспечить высочайший уровень подготовки, чтобы вы были готовы к любым собеседованиям.', 'Вероятно, через месяц или два мы объявим о новом наборе заявок на программу Short Track.', ]} />, diff --git a/src/shared/assets/icons/st.svg b/src/shared/assets/icons/st.svg deleted file mode 100644 index b1eed629d..000000000 --- a/src/shared/assets/icons/st.svg +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/widgets/breadcrumbs/constants.ts b/src/widgets/breadcrumbs/constants.ts index 4d9156f21..22cc1c892 100644 --- a/src/widgets/breadcrumbs/constants.ts +++ b/src/widgets/breadcrumbs/constants.ts @@ -13,5 +13,5 @@ export const breadcrumbNameMap: BreadcrumbNameMap = { 'community': 'Community', 'aws-devops': 'AWS DevOps', 'mentorship': 'Mentorship', - 'short-track': 'RS EPAM Short Track', + 'short-track': 'Short Track', } as const; From 0e3e75964c5be72ed0676f200e7ca9bd3d1e4ccf Mon Sep 17 00:00:00 2001 From: YulikK Date: Wed, 7 May 2025 20:28:57 +0200 Subject: [PATCH 22/24] feat: 754 - add SHORT_TRACK route to ROUTES constant --- src/shared/constants.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/shared/constants.ts b/src/shared/constants.ts index a957b0a64..94c1da15d 100644 --- a/src/shared/constants.ts +++ b/src/shared/constants.ts @@ -99,6 +99,7 @@ export const ROUTES = { AWS_FUNDAMENTALS: 'aws-fundamentals', AWS_DEVOPS: 'aws-devops', REACT: 'reactjs', + SHORT_TRACK: 'short-track', MENTORSHIP: 'mentorship', DOCS_EN: 'docs/en', DOCS_RU: 'docs/ru', From 663c7c9b57072f08c71afe2a4f91718822020852 Mon Sep 17 00:00:00 2001 From: YulikK Date: Thu, 8 May 2025 10:55:53 +0200 Subject: [PATCH 23/24] refactor: 754 - update answer for Short Track parallel courses --- dev-data/faq.data.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-data/faq.data.ts b/dev-data/faq.data.ts index 4e9f4ac2e..d956d3315 100644 --- a/dev-data/faq.data.ts +++ b/dev-data/faq.data.ts @@ -92,7 +92,7 @@ export const faqDataShortTrack: FaqData = [ question: 'Если меня выберут на курс Short Track, могу ли я параллельно продолжить обучение на Stage #2 и проходить оба курса одновременно?', answer: - 'Нет, вы не можете проходить курс Short Track параллельно с другими курсами. Вам нужно выбрать один.', + 'Вы можете продолжать обучение на других курсах параллельно с Short Track, но без поддержки ментора на этих курсах. Рекомендуем оценить свои возможности, так как Short Track требует значительных временных затрат.', }, { question: From 47ae479e55f2bea746e0a8e5faccace6aa38ca4e Mon Sep 17 00:00:00 2001 From: YulikK Date: Sat, 17 May 2025 17:26:48 +0200 Subject: [PATCH 24/24] refactor: 754 - add language parameter to loadTrainers call --- src/views/short-track.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/views/short-track.tsx b/src/views/short-track.tsx index 1a99bd7bf..4ba7e5059 100644 --- a/src/views/short-track.tsx +++ b/src/views/short-track.tsx @@ -1,4 +1,5 @@ import { trainerStore } from '@/entities/trainer'; +import { getCourseLanguage } from '@/shared/helpers/get-course-language'; import { AboutCourse } from '@/widgets/about-course'; import { Breadcrumbs } from '@/widgets/breadcrumbs'; import { Certification } from '@/widgets/certification'; @@ -14,7 +15,8 @@ type JavaScriptEnProps = { courseName: CourseNames['SHORT_TRACK']; }; export const ShortTrack = async ({ courseName }: JavaScriptEnProps) => { - const trainers = await trainerStore.loadTrainers(courseName); + const language = await getCourseLanguage(courseName); + const trainers = await trainerStore.loadTrainers(courseName, language); return ( <>