diff --git a/dev-data/about-course.data.tsx b/dev-data/about-course.data.tsx index 7dda19648..4a0a92c3c 100644 --- a/dev-data/about-course.data.tsx +++ b/dev-data/about-course.data.tsx @@ -48,6 +48,7 @@ export const introLocalizedContent = { [COURSE_TITLES.AWS_FUNDAMENTALS]: enIntro, [COURSE_TITLES.AWS_CLOUD_DEVELOPER]: enIntro, [COURSE_TITLES.AWS_DEVOPS]: enIntro, + [COURSE_TITLES.SHORT_TRACK]: ruIntro, }; const listData = { @@ -251,6 +252,39 @@ const awsDevops: AboutCourseInfo[] = [ }, ]; +const shortTrack: AboutCourseInfo[] = [ + { + id: 5, + title: 'Формат', + info: 'Групповое обучение (около 20 участников в группе), самостоятельное изучение предоставленных материалов, регулярные Q&A сессии, кросс-интервью каждую неделю, пробные собеседования с ментором, интенсивная практика и финальный проект на React или Angular. На обучение вам потребуется ориентировочно 20-40 часов в неделю. Занятия могут проходить как онлайн, так и офлайн.', + icon: paperIcon, + }, + { + id: 1, + title: 'Направление', + info: 'React и Angular. В процессе обучения вы будете изучать оба фреймворка, выполнять задания и проходить интервью по каждому из них.', + icon: planetIcon, + }, + { + id: 2, + title: 'Менторы и эксперты', + info: 'Менторы и эксперты будут помогать в процессе обучения и проверять задания.', + icon: personIcon, + }, + { + id: 3, + title: 'Длительность', + info: 'Курс длится около 3 месяцев, собеседования в EPAM запланированы сразу после окончания курса.', + icon: noteIcon, + }, + { + id: 4, + title: 'Сертификат', + info: 'После успешного окончания курса студенты получат электронный сертификат.', + icon: awardIcon, + }, +]; + export const contentMapAbout: ContentMap = { [COURSE_TITLES.JS_RU]: javaScriptRU(), [COURSE_TITLES.JS_EN]: javaScriptEN(), @@ -261,4 +295,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/course-titles.data.ts b/dev-data/course-titles.data.ts index 7bed3feef..66e03004e 100644 --- a/dev-data/course-titles.data.ts +++ b/dev-data/course-titles.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: '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.ts b/dev-data/courses.data.ts index 5aee95062..bba3ba45e 100644 --- a/dev-data/courses.data.ts +++ b/dev-data/courses.data.ts @@ -7,6 +7,7 @@ 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 shortTrackIcon from '@/shared/assets/icons/st-icon.svg'; import { COURSE_LINKS, ROUTES, TO_BE_DETERMINED } from '@/shared/constants'; import { COURSE_TITLES } from 'data'; @@ -213,4 +214,28 @@ export const courses: Course[] = [ personalMentoringStartDate: null, personalMentoringEndDate: null, }, + { + id: '10', + title: COURSE_TITLES.SHORT_TRACK, + subTitle: null, + descriptionUrl: COURSE_LINKS.SHORT_TRACK, + altTitle: COURSE_TITLES.SHORT_TRACK, + iconSrc: shortTrackIcon, + iconSmall: shortTrackIcon, + iconFooter: shortTrackIcon, + secondaryIcon: shortTrackIcon, + startDate: TO_BE_DETERMINED, + registrationEndDate: TO_BE_DETERMINED, + language: 'ru', + 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', + }, + personalMentoringStartDate: null, + personalMentoringEndDate: null, + }, ]; diff --git a/dev-data/faq.data.ts b/dev-data/faq.data.ts index b7c96af5b..d956d3315 100644 --- a/dev-data/faq.data.ts +++ b/dev-data/faq.data.ts @@ -60,3 +60,48 @@ export const preschoolFaqData: FaqData = [ 'Практические задания проверяются в ходе кросс-чек. Алгоритмические задания, задачи из Codewars, а также задания "CV#1. Markdown & Git", "CV#2. HTML, CSS & Git Basics" проверяются автоматически. Ваши решения необходимо сабмитнуть в RS APP до дедлайна.', }, ]; + +export const faqDataShortTrack: FaqData = [ + { + question: 'Где можно задать вопрос?', + answer: [ + { + id: 0, + text: 'Вопросы можно задать в ', + title: 'Telegram канале', + link: 'https://t.me/epamJsShortTrack', + }, + ], + }, + { + question: 'Возможно ли пройти курс полностью онлайн?', + answer: 'Все этапы обучения можно пройти онлайн. ', + }, + { + question: 'Есть ли список вопросов для собеседования? К чему готовиться?', + answer: [ + { + id: 0, + text: 'Вы можете подготовиться к собеседованию, используя этот список тем и вопросов ', + title: 'темы и вопросы', + link: 'https://github.com/rolling-scopes-school/epam-short-track/tree/main/screening', + }, + ], + }, + { + question: + 'Если меня выберут на курс Short Track, могу ли я параллельно продолжить обучение на Stage #2 и проходить оба курса одновременно?', + answer: + 'Вы можете продолжать обучение на других курсах параллельно с Short Track, но без поддержки ментора на этих курсах. Рекомендуем оценить свои возможности, так как Short Track требует значительных временных затрат.', + }, + { + question: + 'Если меня не примут на курс Short Track после собеседования, смогу ли я продолжить обучение на курсе JS Stage #2?', + answer: 'Да, если вас не выберут на Short Track, вы можете продолжить обучение на JS Stage #2.', + }, + { + question: 'На каком языке проходит обучение?', + answer: + 'Все материалы и задания - на английском. Общение с кураторами, менторами и студентами будет в основном на русском. Некоторые интервью и крос-интревью будут на английском.', + }, +]; diff --git a/dev-data/index.ts b/dev-data/index.ts index 9a5ef0688..54444be0f 100644 --- a/dev-data/index.ts +++ b/dev-data/index.ts @@ -1,7 +1,4 @@ -export type { - AboutCourseInfo, - DataMap, -} from './courses-data.types'; +export type { AboutCourseInfo, DataMap } from './courses-data.types'; export type { CourseTitle, ImageLink, @@ -14,11 +11,7 @@ export type { } from './mentorship-data.types'; export type { MentorshipCourseTitles, MentorshipLinks } from './mentorship-data.types'; -export type { - StageCardProps, - StudyPathPage, - StudyPathProps, -} from './study-path-data.types'; +export type { StageCardProps, StudyPathPage, StudyPathProps } from './study-path-data.types'; export { ANNOUNCEMENT_TELEGRAM_LINK, @@ -55,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'; @@ -65,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/dev-data/required.data.ts b/dev-data/required.data.ts index 9bef71632..99c4493c8 100644 --- a/dev-data/required.data.ts +++ b/dev-data/required.data.ts @@ -336,4 +336,45 @@ export const courseDataMap: CourseMap = { }, ], }, + [COURSE_TITLES.SHORT_TRACK]: { + title: 'Что требуется для прохождения курса?', + knowBefore: { + title: 'Необходимо до начала', + description: [ + 'Вы являетесь текущим студентом Stage#1 или выпускником/участником предыдущих наборов RS School.', + 'У вас есть твёрдые навыки front-end разработки и уровень английского языка не ниже B1 (Intermediate).', + 'У вас есть базовые знания алгоритмов и структур данных, опыт решения алгоритмических задач.', + 'Вы готовы уделять обучению как минимум 20-40 часов в неделю.', + 'Вы проживаете в одной из следующих стран: Грузия, Узбекистан, Казахстан, Кыргызстан, Армения, Польша, Литва, Турция, Хорватия, Болгария, Венгрия, Румыния, Сербия', + ], + }, + willLearn: [ + { + title: 'Требования к документам для Польши:', + description: [ + 'Разрешение на долгосрочное проживание в ЕС (Karta rezydenta długoterminowego UE)', + 'Карта постоянного проживания (Karta stałego pobytu)', + 'Польское гражданство (Obywatelstwo polskie)', + 'Карта временного проживания (Karta czasowego pobytu) с отметкой о доступе к рынку труда (dostęp do rynku pracy)', + ], + }, + { + title: 'Требования к документам для Литвы:', + description: [ + 'Гражданство Литвы или Латвии (Lietuvos Respublikos pilietybė)', + 'Разрешение на постоянное проживание (Nuolatinis leidimas gyventi)', + 'Литовская голубая карта ЕС (ES mėlynoji kortelė)', + 'Разрешение на временное проживание с правом на работу (Laikinas leidimas gyventi su teise dirbti)', + ], + }, + { + title: 'Требования к документам для Турции:', + description: ['Гражданство Турецкой Республики'], + }, + { + title: 'Хорватия, Болгария, Венгрия, Румыния, Сербия:', + description: ['Трудоустройство возможно в зависимости от ваших документов и опыта'], + }, + ], + }, }; diff --git a/dev-data/study-path-data.types.ts b/dev-data/study-path-data.types.ts index 1afcc2e3a..d10c7f158 100644 --- a/dev-data/study-path-data.types.ts +++ b/dev-data/study-path-data.types.ts @@ -3,7 +3,7 @@ import { StaticImageData } from 'next/image'; import type { LinkList } from '@/widgets/required/types'; export type StudyPathPage = { - page: 'courses' | 'jsEn' | 'jsRu' | 'angular' | 'awsDev'; + page: 'courses' | 'jsEn' | 'jsRu' | 'angular' | 'awsDev' | 'short-track'; }; export type StudyPathProps = { diff --git a/dev-data/study-path.data.ts b/dev-data/study-path.data.ts index bd375fa30..68f388e6d 100644 --- a/dev-data/study-path.data.ts +++ b/dev-data/study-path.data.ts @@ -10,14 +10,16 @@ import feJsStage3 from '@/shared/assets/stages/stage-3.webp'; import { ROUTES } from '@/shared/constants'; export const studyPath: Record = { - courses: { + 'courses': { sectionTitle: 'Choose what you want to learn', - sectionIntro: 'A full-stack developer is someone who has expertise in both frontend (what users see) and backend (server and database) development. This dual skill set enables them to supervise and implement projects from start to finish. Businesses today prioritize hiring full-stack developers because they can efficiently bridge various technological aspects, resulting in faster product development.', + sectionIntro: + 'A full-stack developer is someone who has expertise in both frontend (what users see) and backend (server and database) development. This dual skill set enables them to supervise and implement projects from start to finish. Businesses today prioritize hiring full-stack developers because they can efficiently bridge various technological aspects, resulting in faster product development.', stages: [ { id: 1, title: 'Pre-school (RU)', - intro: 'For those brand new to coding, this is your starting point. Get acquainted with the basics and build a strong foundation.', + intro: + 'For those brand new to coding, this is your starting point. Get acquainted with the basics and build a strong foundation.', modules: [ { id: 1, @@ -43,7 +45,8 @@ export const studyPath: Record = { { id: 2, title: 'JS/TS/FE Fundamentals', - intro: 'Dive deep into the world of JavaScript, TypeScript, and Frontend development. Understand the core concepts and set yourself up for success.', + intro: + 'Dive deep into the world of JavaScript, TypeScript, and Frontend development. Understand the core concepts and set yourself up for success.', modules: [ { id: 1, @@ -76,7 +79,8 @@ export const studyPath: Record = { { id: 3, title: 'React or Angular', - intro: "Choose your framework and become proficient. Whether you're Team React or Team Angular, we ensure you become an expert", + intro: + "Choose your framework and become proficient. Whether you're Team React or Team Angular, we ensure you become an expert", modules: [ { id: 1, @@ -109,7 +113,8 @@ export const studyPath: Record = { { id: 4, title: 'NodeJS', - intro: "Grasp the power of backend development. With Nodejs, you'll learn to build robust and scalable applications", + intro: + "Grasp the power of backend development. With Nodejs, you'll learn to build robust and scalable applications", modules: [ { id: 1, @@ -135,7 +140,8 @@ export const studyPath: Record = { { id: 5, title: 'AWS Fundamentals', - intro: 'Delve into the cloud with Amazon Web Services. Understand the essentials and ensure your apps are hosted seamlessly.', + intro: + 'Delve into the cloud with Amazon Web Services. Understand the essentials and ensure your apps are hosted seamlessly.', modules: [ { id: 1, @@ -161,7 +167,8 @@ export const studyPath: Record = { { id: 6, title: 'AWS Developer', - intro: 'Go beyond the basics. Become an AWS pro and unlock the potential of cloud development.', + intro: + 'Go beyond the basics. Become an AWS pro and unlock the potential of cloud development.', modules: [ { id: 1, @@ -187,7 +194,8 @@ export const studyPath: Record = { { id: 7, title: 'AWS DevOps', - intro: 'If you are looking for an entry point to kickstart your IT career as a DevOps engineer, then this AWS course challenge is what you need.', + intro: + 'If you are looking for an entry point to kickstart your IT career as a DevOps engineer, then this AWS course challenge is what you need.', modules: [ { id: 1, @@ -212,14 +220,16 @@ export const studyPath: Record = { }, ], }, - jsEn: { + 'jsEn': { sectionTitle: 'Choose what you want to learn', - sectionIntro: 'A full-stack developer is someone who has expertise in both frontend (what users see) and backend (server and database) development. This dual skill set enables them to supervise and implement projects from start to finish. Businesses today prioritize hiring full-stack developers because they can efficiently bridge various technological aspects, resulting in faster product development.', + sectionIntro: + 'A full-stack developer is someone who has expertise in both frontend (what users see) and backend (server and database) development. This dual skill set enables them to supervise and implement projects from start to finish. Businesses today prioritize hiring full-stack developers because they can efficiently bridge various technological aspects, resulting in faster product development.', stages: [ { id: 1, title: 'Stage 1', - intro: 'Everyone registered is automatically eligible for this stage. The first stage lasts 15 weeks. This stage includes practical assignments and tests. Evaluation is either automatic or in the form of cross-checking between students.', + intro: + 'Everyone registered is automatically eligible for this stage. The first stage lasts 15 weeks. This stage includes practical assignments and tests. Evaluation is either automatic or in the form of cross-checking between students.', modules: [ { id: 1, @@ -237,7 +247,8 @@ export const studyPath: Record = { { id: 2, title: 'Stage 2', - intro: 'To pass to the second stage, you must successfully complete the tasks and tests from the first stage without missing the deadlines, and pass a mock technical interview with one of our mentors.The second stage lasts 20 weeks. You will be assigned a personal mentor who will answer your questions from now on. This stage includes practical exercises and tests which will be reviewed and evaluated by your mentor.', + intro: + 'To pass to the second stage, you must successfully complete the tasks and tests from the first stage without missing the deadlines, and pass a mock technical interview with one of our mentors.The second stage lasts 20 weeks. You will be assigned a personal mentor who will answer your questions from now on. This stage includes practical exercises and tests which will be reviewed and evaluated by your mentor.', modules: [ { id: 1, @@ -255,7 +266,8 @@ export const studyPath: Record = { { id: 3, title: 'Stage 3', - intro: 'Learning either React or Angular Framework (the choice belongs to the student). To enroll, you need to successfully complete two stages of training. Format: mentoring, self-study, webinars, and communication on Discord. Practical sessions are reviewed and evaluated by mentors, as well as through cross-checking methods. Throughout the training, mock interviews are conducted with different mentors.', + intro: + 'Learning either React or Angular Framework (the choice belongs to the student). To enroll, you need to successfully complete two stages of training. Format: mentoring, self-study, webinars, and communication on Discord. Practical sessions are reviewed and evaluated by mentors, as well as through cross-checking methods. Throughout the training, mock interviews are conducted with different mentors.', modules: [ { id: 1, @@ -284,14 +296,16 @@ export const studyPath: Record = { }, ], }, - jsRu: { + 'jsRu': { sectionTitle: 'Выберите, чему вы хотите научиться', - sectionIntro: 'Full-stack разработчик — это человек, обладающий опытом как в области внешнего интерфейса (то, что видят пользователи), так и в области внутреннего интерфейса (сервера и базы данных). Этот двойной набор навыков позволяет им контролировать и реализовывать проекты от начала до конца. Сегодня компании отдают приоритет найму разработчиков полного стека, потому что они могут эффективно объединить различные технологические аспекты, что приводит к более быстрой разработке продукта.', + sectionIntro: + 'Full-stack разработчик — это человек, обладающий опытом как в области внешнего интерфейса (то, что видят пользователи), так и в области внутреннего интерфейса (сервера и базы данных). Этот двойной набор навыков позволяет им контролировать и реализовывать проекты от начала до конца. Сегодня компании отдают приоритет найму разработчиков полного стека, потому что они могут эффективно объединить различные технологические аспекты, что приводит к более быстрой разработке продукта.', stages: [ { id: 1, title: 'Этап 1', - intro: 'Все зарегистрированные автоматически имеют право на прохождение этого этапа. Первый этап продолжается 15 недель. На этом этапе включаются практические задания и тесты. Оценка может быть как автоматической, так и в форме перекрестной проверки между учащимися.', + intro: + 'Все зарегистрированные автоматически имеют право на прохождение этого этапа. Первый этап продолжается 15 недель. На этом этапе включаются практические задания и тесты. Оценка может быть как автоматической, так и в форме перекрестной проверки между учащимися.', modules: [ { id: 1, @@ -309,7 +323,8 @@ export const studyPath: Record = { { id: 2, title: 'Этап 2', - intro: 'Чтобы перейти на второй этап, вам необходимо успешно выполнить задания и тесты первого этапа без пропуска сроков и пройти пробное техническое интервью с одним из наших менторов. Второй этап длится 20 недель. Вам будет назначен личный ментор, который будет отвечать на ваши вопросы. Этот этап включает в себя практические задания и тесты, которые будут проверяться и оцениваться вашим ментором, а также перекрестной проверкой других студентов. Помимо этого, проводятся пробные интервью с другими менторами.', + intro: + 'Чтобы перейти на второй этап, вам необходимо успешно выполнить задания и тесты первого этапа без пропуска сроков и пройти пробное техническое интервью с одним из наших менторов. Второй этап длится 20 недель. Вам будет назначен личный ментор, который будет отвечать на ваши вопросы. Этот этап включает в себя практические задания и тесты, которые будут проверяться и оцениваться вашим ментором, а также перекрестной проверкой других студентов. Помимо этого, проводятся пробные интервью с другими менторами.', modules: [ { id: 1, @@ -327,7 +342,8 @@ export const studyPath: Record = { { id: 3, title: 'Этап 3', - intro: 'Обучение применению React или Angular (выбор за студентом). Чтобы записаться на курс, необходимо успешно пройти первые два этапа обучения. Формат: менторство, самостоятельные занятия, вебинары и общение в Discord. Практические занятия разбираются и оцениваются наставниками, а также перекрестной проверкой другими студентами. На протяжении всего обучения проводятся пробные интервью с другими менторами.', + intro: + 'Обучение применению React или Angular (выбор за студентом). Чтобы записаться на курс, необходимо успешно пройти первые два этапа обучения. Формат: менторство, самостоятельные занятия, вебинары и общение в Discord. Практические занятия разбираются и оцениваются наставниками, а также перекрестной проверкой другими студентами. На протяжении всего обучения проводятся пробные интервью с другими менторами.', modules: [ { id: 1, @@ -356,7 +372,7 @@ export const studyPath: Record = { }, ], }, - angular: { + 'angular': { sectionTitle: 'Course Curriculum', sectionIntro: 'This program will have theory and practice on the following topic:', stages: [ @@ -566,7 +582,7 @@ export const studyPath: Record = { }, ], }, - awsDev: { + 'awsDev': { sectionTitle: 'Course Curriculum', sectionIntro: 'This program will have theory and practice on the following topic:', stages: [ @@ -950,4 +966,101 @@ export const studyPath: Record = { }, ], }, + 'short-track': { + sectionTitle: 'Short Track', + sectionIntro: + 'Интенсивная программа подготовки для опытных разработчиков, нацеленная на быстрое развитие навыков до уровня, необходимого для успешного трудоустройства. Программа включает в себя следующие этапы:', + stages: [ + { + id: 1, + title: 'Шаг 1', + intro: '', + modules: [ + { + id: 1, + text: 'Заполните форму заявки. Ожидайте приглашение на вступительное собеседование. При большом количестве заявок может быть назначено дополнительное тестовое задание.', + links: [], + marked: false, + }, + ], + image: { + src: feJsStage1, + alt: 'студенты за работой', + className: 'stage-image', + }, + }, + { + id: 2, + title: 'Шаг 2', + intro: '', + modules: [ + { + id: 1, + text: 'Пройдите вступительное собеседование. После завершения всех собеседований будут объявлены результаты. В случае зачисления в группу, вы получите приглашение для регистрации на курс.', + links: [], + marked: false, + }, + ], + image: { + src: feJsStage3, + alt: 'студенты за работой', + className: 'stage-image', + }, + }, + { + id: 3, + title: 'Шаг 3', + intro: '', + modules: [ + { + id: 1, + text: 'Присоединитесь к команде из 12-20 человек под руководством ментора. Активно участвуйте во всех мероприятиях: самостоятельное изучение предоставленных материалов, регулярные Q&A сессии, кросс-интервью, пробные собеседования с ментором и интенсивная практика.', + links: [], + marked: false, + }, + ], + image: { + src: feJsStage2, + alt: 'студенты за работой', + className: 'stage-image', + }, + }, + { + id: 4, + title: 'Шаг 4', + intro: '', + modules: [ + { + id: 1, + text: 'В конце первого месяца обучения вы вместе с ментором определитесь с фреймворком. Примерное соотношение: 60% React / 40% Angular.', + links: [], + marked: false, + }, + ], + image: { + src: ReactAngIcon, + alt: 'логотипы react и angular', + className: 'stage-image', + }, + }, + { + id: 5, + title: 'Шаг 5', + intro: '', + modules: [ + { + id: 1, + text: 'Разработка финального проекта индивидуально или в команде из 3 человек (зависит от задания) под руководством ментора.', + links: [], + marked: false, + }, + ], + image: { + src: null, + alt: '', + className: '', + }, + }, + ], + }, }; diff --git a/dev-data/training-program.data.tsx b/dev-data/training-program.data.tsx index 7d08bd74e..614a573b8 100644 --- a/dev-data/training-program.data.tsx +++ b/dev-data/training-program.data.tsx @@ -9,6 +9,7 @@ import { CourseNamesKeys, } from './course-titles.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'; @@ -293,6 +294,31 @@ export const contentMap: ContentMap = { ], image: awsDevImg, }, + [COURSE_TITLES.SHORT_TRACK]: { + title: 'О возможностях', + content: [ + + Эта программа предназначена для студентов, которые уже обладают базовыми знаниями + JavaScript/TypeScript и хотят быстро повысить свой уровень для соответствия требованиям + трудоустройства в EPAM. + , + + Мы запускаем программу Short Track, когда в EPAM открываются вакансии Junior FE + разработчиков в разных локациях. Наша цель - помочь вам улучшить навыки и подготовиться к + собеседованиям в ускоренном режиме, чтобы быть готовыми всего за 3 месяца. + , + , + ], + image: mentorWithStudents, + }, }; export const trainingProgramLink = { diff --git a/dev-data/widget-communication.data.ts b/dev-data/widget-communication.data.ts index 7d88a40f8..022f1d29b 100644 --- a/dev-data/widget-communication.data.ts +++ b/dev-data/widget-communication.data.ts @@ -12,8 +12,7 @@ export const communicationText = { 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.', @@ -26,14 +25,12 @@ export const communicationText = { discordParagraphTextJs: '', discordLink: 'Дискорд сервер курса', discordLinkJs: '', - firstParagraphSecondHalf: - ', где вы можете посмотреть последние новости, задать вопросы и общаться со студентами.', + firstParagraphSecondHalf: ', где вы можете посмотреть последние новости, задать вопросы и общаться со студентами.', telegramParagraphTextJs: '', discordNote: 'Внимание! В некоторых странах для доступа к Discord требуется использование VPN. Если у вас возникают трудности с подключением, попробуйте использовать надёжный VPN-сервис.', secondParagraphFirstHalf: 'Также есть каналы в ', telegramLink: 'Телеграм', - secondParagraphSecondHalf: - ' для обсуждения мероприятий, относящихся к вашему городу. Например, офлайн лекции или просто для общения студентов из одной локации.', + secondParagraphSecondHalf: ' для обсуждения мероприятий, относящихся к вашему городу. Например, офлайн лекции или просто для общения студентов из одной локации.', thirdParagraphFirstHalf: 'Обязательно прочитайте информацию об общении в RS School в ', rsDocsLink: 'RS Docs', thirdParagraphSecondHalf: ', где вы можете найти правила, описание каналов, FAQ.', 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/entities/course/constants.ts b/src/entities/course/constants.ts index d51c67a2b..5f24a2ca8 100644 --- a/src/entities/course/constants.ts +++ b/src/entities/course/constants.ts @@ -14,4 +14,5 @@ export const API_COURSES_IDS_DICTIONARY: Record = { [COURSE_TITLES.JS_RU]: '45GfCeWyEljTfHzUgnQPod', [COURSE_TITLES.REACT]: '22u5y3ir02LMShH6AyNOsE', [COURSE_TITLES.JS_EN]: 'EiDyAqKQQpcauf4z8htAb', + [COURSE_TITLES.SHORT_TRACK]: 'pb5aNV0EvQpF3EMiSTS7w', }; diff --git a/src/shared/assets/icons/short-track.svg b/src/shared/assets/icons/short-track.svg new file mode 100644 index 000000000..9fb50bbbd --- /dev/null +++ b/src/shared/assets/icons/short-track.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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/shared/constants.ts b/src/shared/constants.ts index 83559b7b1..94c1da15d 100644 --- a/src/shared/constants.ts +++ b/src/shared/constants.ts @@ -40,6 +40,7 @@ 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', }; export const KEY_CODES = { ESCAPE: 'Escape' } as const; @@ -98,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', diff --git a/src/views/short-track.tsx b/src/views/short-track.tsx new file mode 100644 index 000000000..4ba7e5059 --- /dev/null +++ b/src/views/short-track.tsx @@ -0,0 +1,34 @@ +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'; +import { Faq } from '@/widgets/faq'; +import { HeroCourse } from '@/widgets/hero-course'; +import { Required } from '@/widgets/required'; +import { StudyPath } from '@/widgets/study-path'; +import { Trainers } from '@/widgets/trainers'; +import { TrainingProgram } from '@/widgets/training-program'; +import { CourseNames, faqDataShortTrack } from 'data'; + +type JavaScriptEnProps = { + courseName: CourseNames['SHORT_TRACK']; +}; +export const ShortTrack = async ({ courseName }: JavaScriptEnProps) => { + const language = await getCourseLanguage(courseName); + const trainers = await trainerStore.loadTrainers(courseName, language); + + return ( + <> + + + + + + + + + {trainers && } + + ); +}; diff --git a/src/widgets/breadcrumbs/constants.ts b/src/widgets/breadcrumbs/constants.ts index ca760eb8a..22cc1c892 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': 'Short Track', } as const; 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;