Skip to content
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

DRAFT 754-feat: Short track #755

Draft
wants to merge 6 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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

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?

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?

': 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