From 8d92ad69c382eb26723bb4444469f71a9a9183db Mon Sep 17 00:00:00 2001 From: YulikK Date: Thu, 23 Jan 2025 14:45:32 +0100 Subject: [PATCH 1/6] 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 2/6] 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 3/6] 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 4/6] 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 5/6] 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 6/6] 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;