Skip to content

DRAFT 754-feat: Short track #755

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 26 commits into from
Closed
Show file tree
Hide file tree
Changes from 6 commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
8d92ad6
feat: 754 - add course page
YulikK Jan 23, 2025
5b3503c
refactor: 754 - add format activities
YulikK Jan 23, 2025
e35ee0a
refactor: 754 - lint fix
YulikK Jan 23, 2025
59b7ebe
refactor: 754 - texts update
YulikK Jan 24, 2025
a85bc42
refactor: 754 - lint fix
YulikK Jan 24, 2025
7bec9fa
refactor: 754 - update Curriculum steps
YulikK Jan 24, 2025
029ec3a
feat: 754 - merge branch main
YulikK Apr 29, 2025
a02d9b0
docs: 754 - translate content to Russian for localization
YulikK Apr 29, 2025
56f8634
docs: 754 - add localized content for SHORT_TRACK course
YulikK Apr 29, 2025
1998711
docs: 754 - update section intro and step descriptions to Russian
YulikK Apr 29, 2025
9273847
docs: 754 - translate course requirements to Russian
YulikK Apr 29, 2025
6552985
docs: 754 - update module text for clarity and detail
YulikK Apr 29, 2025
e2569f8
docs: 754 - update course description for clarity and accuracy
YulikK Apr 29, 2025
f69ac59
refactor: 754 - replace hardcoded trainers with dynamic loading
YulikK Apr 30, 2025
daf7759
refactor: 754 - update short-track icon and translate faq
YulikK Apr 30, 2025
18be705
refactor: 754 - update short track icon references
YulikK Apr 30, 2025
296eca2
refactor: 754 - remove unused comment
YulikK Apr 30, 2025
45b7579
refactor: 754 - format widget-communication.data.ts for readability
YulikK Apr 30, 2025
a416f66
refactor: 754 - improve readability by formatting string concatenation
YulikK Apr 30, 2025
4193618
refactor: 754 - update course requirements training program and about…
YulikK Apr 30, 2025
d318d0c
refactor: 754 - update program description
YulikK Apr 30, 2025
5bf7f4e
refactor: 754 - update course titles and remove redundant assets
YulikK May 7, 2025
b628f25
feat: 754 - merge branch main
YulikK May 7, 2025
0e3e759
feat: 754 - add SHORT_TRACK route to ROUTES constant
YulikK May 7, 2025
663c7c9
refactor: 754 - update answer for Short Track parallel courses
YulikK May 8, 2025
47ae479
refactor: 754 - add language parameter to loadTrainers call
YulikK May 17, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions dev-data/about-course.data.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {
Expand Down Expand Up @@ -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. Activities can be conducted both online and offline',
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 digital certificate.',
icon: awardIcon,
},
];

export const contentMapAbout: ContentMap = {
[COURSE_TITLES.JS_RU]: javaScriptRU(),
[COURSE_TITLES.JS_EN]: javaScriptEN(),
Expand All @@ -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,
};
2 changes: 2 additions & 0 deletions dev-data/courseTitles.data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
3 changes: 2 additions & 1 deletion dev-data/courses-data.types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
22 changes: 22 additions & 0 deletions dev-data/courses.data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -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,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Icon WO border. I remember we would like to remove all borders there, but I suppose we should remove them at the same time

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

update icons

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',
},
},
];
50 changes: 49 additions & 1 deletion dev-data/faq.data.ts
Original file line number Diff line number Diff line change
@@ -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: [
Expand Down Expand Up @@ -58,3 +65,44 @@ 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 the JS Short Track, can I also continue with the classic Stage #2 and take both courses at the same time?',
answer:
'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 into the JS Short Track course after the interview, can I continue with the JS Stage #2 course?',
answer:
'Yes, if you are not selected for the JS Short Track, you can continue your studies in JS Stage #2. ',
},
];
3 changes: 2 additions & 1 deletion dev-data/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand All @@ -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';
Expand All @@ -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';
40 changes: 40 additions & 0 deletions dev-data/required.data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -336,4 +336,44 @@ 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 the right to work (Laikinas leidimas gyventi su teise dirbti)',
],
},
{
title: 'Turkish document requirements:',
description: ['Turkish citizens'],
},
{
title: 'Croatia, Bulgaria, Hungary, Romania, Serbia:',
description: ['employment might be possible depending on your documents and experience'],
},
],
},
};
42 changes: 42 additions & 0 deletions dev-data/short-track-path.data.ts
Original file line number Diff line number Diff line change
@@ -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 the 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',
},
];
25 changes: 25 additions & 0 deletions dev-data/short-track.data.ts
Original file line number Diff line number Diff line change
@@ -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,
},
];
26 changes: 26 additions & 0 deletions dev-data/training-program.data.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -299,6 +300,31 @@ export const contentMap: ContentMap = {
],
image: awsDevImg,
},
[COURSE_TITLES.SHORT_TRACK]: {
title: 'About the Opportunities',
content: [
<Paragraph key="short track 01">
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.
</Paragraph>,
<Paragraph key="short track 02">
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.
</Paragraph>,
<List
key="short track 03"
data={[
'In 2024, EPAM hired more than 50 RS School graduates. We hope to double that number this year despite the unstable demand. Project positions are highly irregular, and it’s difficult to predict the exact number of vacancies.',
'Historically, this course was called “Short Track” (before 2022), but since then, the market has changed significantly, and there is no longer a 100% guarantee that vacancies will be available right after completing the Short Track.',
'However, we aim to provide the highest level of training to prepare you for any interviews. Most of our organizers have completed this program themselves and successfully joined EPAM.',
'It is likely that in a month or two, we will announce another round of applications for the Short Track program.',
]}
/>,
],
image: mentorWithStudents,
},
};

export const trainingProgramLink = {
Expand Down
13 changes: 9 additions & 4 deletions dev-data/widget-communication.data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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:',
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need it?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Delete

firstParagraphFirstHalf: 'Here is link for the ',
discordParagraphTextJs: ': Join the Discord server to see the latest news and chat with students.',
discordParagraphTextJs:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are you adding a line break?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's prettier. Remove it

': 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:
Expand All @@ -29,7 +33,8 @@ export const communicationText = {
firstParagraphSecondHalf:
', где вы можете посмотреть последние новости, задать вопросы и общаться со студентами.',
telegramParagraphTextJs: '',
discordNote: 'Внимание! В некоторых странах для доступа к Discord требуется использование VPN. Если у вас возникают трудности с подключением, попробуйте использовать надёжный VPN-сервис.',
discordNote:
'Внимание! В некоторых странах для доступа к Discord требуется использование VPN. Если у вас возникают трудности с подключением, попробуйте использовать надёжный VPN-сервис.',
secondParagraphFirstHalf: 'Также есть каналы в ',
telegramLink: 'Телеграм',
secondParagraphSecondHalf:
Expand Down
Loading
Loading