├── 04.chat-app
├── .npmrc
├── apps
│ ├── chatapp
│ │ ├── src
│ │ │ ├── app
│ │ │ │ ├── page.module.css
│ │ │ │ ├── globals.css
│ │ │ │ ├── favicon.ico
│ │ │ │ ├── fonts
│ │ │ │ │ ├── GeistVF.woff
│ │ │ │ │ └── GeistMonoVF.woff
│ │ │ │ ├── chat
│ │ │ │ │ ├── page.tsx
│ │ │ │ │ └── layout.tsx
│ │ │ │ └── layout.tsx
│ │ │ ├── lib
│ │ │ │ └── axios.ts
│ │ │ ├── components
│ │ │ │ └── footer.tsx
│ │ │ └── hooks
│ │ │ │ └── useUsername.ts
│ │ ├── next.config.js
│ │ ├── postcss.config.mjs
│ │ ├── eslint.config.js
│ │ ├── tsconfig.json
│ │ ├── .gitignore
│ │ └── package.json
│ └── server
│ │ ├── .env.example
│ │ ├── eslint.config.mjs
│ │ ├── tsconfig.json
│ │ ├── src
│ │ ├── middleware
│ │ │ └── checkRoutes.ts
│ │ ├── routes
│ │ │ ├── auth.route.ts
│ │ │ ├── search.route.ts
│ │ │ └── chat.route.ts
│ │ ├── utils
│ │ │ └── cookieOptions.ts
│ │ ├── index.ts
│ │ ├── controller
│ │ │ ├── dbConnect.ts
│ │ │ └── startServer.ts
│ │ └── statusCode
│ │ │ └── response.ts
│ │ ├── .gitignore
│ │ └── package.json
├── packages
│ ├── utils
│ │ ├── src
│ │ │ ├── index.ts
│ │ │ └── encryption.ts
│ │ ├── .env.example
│ │ ├── eslint.config.mjs
│ │ ├── tsconfig.json
│ │ └── package.json
│ ├── db
│ │ ├── .gitignore
│ │ ├── .env.example
│ │ ├── prisma
│ │ │ └── migrations
│ │ │ │ └── migration_lock.toml
│ │ ├── tsconfig.json
│ │ ├── index.ts
│ │ └── package.json
│ ├── eslint-config
│ │ ├── README.md
│ │ ├── package.json
│ │ └── base.js
│ ├── types
│ │ ├── eslint.config.mjs
│ │ ├── tsconfig.json
│ │ ├── package.json
│ │ └── src
│ │ │ └── clientTypes.ts
│ └── typescript-config
│ │ ├── react-library.json
│ │ ├── package.json
│ │ ├── nextjs.json
│ │ └── base.json
├── .eslintignore
├── .lintstagedrc
├── public
│ ├── chat.png
│ ├── dm-chat.png
│ ├── signin.png
│ ├── signup-1.png
│ ├── signup-2.png
│ ├── join-room.png
│ ├── room-chat.png
│ ├── architecture.png
│ ├── chat-app-demo.png
│ ├── create-room.png
│ └── search-user.png
├── .prettierignore
├── .prettierrc
├── .eslintrc.js
├── turbo.json
├── .gitignore
└── package.json
├── 06.blog-web
├── .npmrc
├── apps
│ ├── web
│ │ ├── src
│ │ │ ├── App.css
│ │ │ ├── index.css
│ │ │ ├── vite-env.d.ts
│ │ │ ├── utils
│ │ │ │ └── api.ts
│ │ │ ├── main.tsx
│ │ │ ├── components
│ │ │ │ ├── Quote.tsx
│ │ │ │ ├── Avatar.tsx
│ │ │ │ └── LabelledInput.tsx
│ │ │ ├── pages
│ │ │ │ ├── Signin.tsx
│ │ │ │ ├── Signup.tsx
│ │ │ │ ├── Blogs.tsx
│ │ │ │ └── Blog.tsx
│ │ │ ├── App.tsx
│ │ │ └── hooks
│ │ │ │ └── index.ts
│ │ ├── tsconfig.json
│ │ ├── vite.config.ts
│ │ ├── .gitignore
│ │ ├── index.html
│ │ ├── tsconfig.node.json
│ │ ├── tsconfig.app.json
│ │ ├── eslint.config.js
│ │ └── package.json
│ └── server
│ │ ├── .env.example
│ │ ├── eslint.config.mjs
│ │ ├── tsconfig.json
│ │ ├── src
│ │ ├── middleware
│ │ │ └── checkRoutes.ts
│ │ ├── utils
│ │ │ └── cookieOptions.ts
│ │ ├── index.ts
│ │ ├── routes
│ │ │ ├── auth.route.ts
│ │ │ ├── comment.route.ts
│ │ │ └── blog.route.ts
│ │ ├── controller
│ │ │ ├── db.controller.ts
│ │ │ └── start.controller.ts
│ │ ├── statusCode
│ │ │ └── response.ts
│ │ └── app.ts
│ │ ├── .gitignore
│ │ └── package.json
├── .eslintignore
├── .lintstagedrc
├── public
│ ├── blogs1.png
│ ├── blogs2.png
│ ├── blogs3.png
│ ├── blogs4.png
│ ├── signin.png
│ ├── signup.png
│ ├── read-blog.png
│ ├── blog-create.png
│ ├── blog-update.png
│ └── blog-read-commnet.png
├── packages
│ ├── eslint-config
│ │ ├── README.md
│ │ ├── package.json
│ │ └── base.js
│ ├── db
│ │ ├── .gitignore
│ │ ├── .env.example
│ │ ├── prisma
│ │ │ ├── migrations
│ │ │ │ └── migration_lock.toml
│ │ │ └── schema.prisma
│ │ ├── tsconfig.json
│ │ ├── index.ts
│ │ └── package.json
│ ├── types
│ │ ├── eslint.config.mjs
│ │ ├── src
│ │ │ └── server
│ │ │ │ ├── index.ts
│ │ │ │ └── validators
│ │ │ │ ├── comment.validator.ts
│ │ │ │ ├── auth.validator.ts
│ │ │ │ └── blog.validator.ts
│ │ ├── tsconfig.json
│ │ └── package.json
│ └── typescript-config
│ │ ├── react-library.json
│ │ ├── package.json
│ │ ├── nextjs.json
│ │ └── base.json
├── .prettierignore
├── .prettierrc
├── .eslintrc.js
├── turbo.json
├── .gitignore
└── package.json
├── 01.WeatherApp
├── src
│ ├── App.css
│ ├── vite-env.d.ts
│ ├── index.css
│ ├── App.tsx
│ ├── main.tsx
│ ├── types
│ │ └── index.ts
│ ├── UI
│ │ ├── DotsLoading.tsx
│ │ └── DotsLoading.css
│ └── store
│ │ └── index.ts
├── .env.example
├── public
│ └── weather-demo.png
├── postcss.config.js
├── tsconfig.json
├── vite.config.ts
├── tailwind.config.js
├── .gitignore
├── index.html
├── README.md
├── tsconfig.node.json
├── tsconfig.app.json
├── eslint.config.js
└── package.json
├── 02.Calculator
├── src
│ ├── App.css
│ ├── vite-env.d.ts
│ ├── index.css
│ ├── types
│ │ └── index.ts
│ ├── main.tsx
│ ├── App.tsx
│ └── components
│ │ ├── Display.tsx
│ │ ├── Button.tsx
│ │ └── History.tsx
├── public
│ └── calculator-demo.png
├── tsconfig.json
├── vite.config.ts
├── .gitignore
├── index.html
├── README.md
├── tsconfig.node.json
├── tsconfig.app.json
├── eslint.config.js
└── package.json
├── 05.student-teacher-booking-appointment
├── .npmrc
├── apps
│ ├── admin
│ │ ├── src
│ │ │ └── app
│ │ │ │ ├── page.module.css
│ │ │ │ ├── globals.css
│ │ │ │ ├── favicon.ico
│ │ │ │ ├── fonts
│ │ │ │ ├── GeistVF.woff
│ │ │ │ └── GeistMonoVF.woff
│ │ │ │ ├── dashboard
│ │ │ │ ├── teacher
│ │ │ │ │ └── page.tsx
│ │ │ │ ├── page.tsx
│ │ │ │ ├── student
│ │ │ │ │ ├── denied
│ │ │ │ │ │ └── page.tsx
│ │ │ │ │ ├── approved
│ │ │ │ │ │ └── page.tsx
│ │ │ │ │ └── pending
│ │ │ │ │ │ └── page.tsx
│ │ │ │ └── layout.tsx
│ │ │ │ ├── login
│ │ │ │ └── page.tsx
│ │ │ │ └── page.tsx
│ │ ├── next.config.js
│ │ ├── postcss.config.mjs
│ │ ├── eslint.config.js
│ │ ├── tsconfig.json
│ │ ├── .gitignore
│ │ └── package.json
│ ├── student
│ │ ├── src
│ │ │ └── app
│ │ │ │ ├── page.module.css
│ │ │ │ ├── globals.css
│ │ │ │ ├── favicon.ico
│ │ │ │ ├── fonts
│ │ │ │ ├── GeistVF.woff
│ │ │ │ └── GeistMonoVF.woff
│ │ │ │ ├── dashboard
│ │ │ │ ├── appointment
│ │ │ │ │ ├── page.tsx
│ │ │ │ │ └── create
│ │ │ │ │ │ └── page.tsx
│ │ │ │ ├── page.tsx
│ │ │ │ └── layout.tsx
│ │ │ │ ├── login
│ │ │ │ └── page.tsx
│ │ │ │ ├── register
│ │ │ │ └── page.tsx
│ │ │ │ └── page.tsx
│ │ ├── next.config.js
│ │ ├── postcss.config.mjs
│ │ ├── eslint.config.js
│ │ ├── tsconfig.json
│ │ ├── .gitignore
│ │ └── package.json
│ ├── teacher
│ │ ├── src
│ │ │ └── app
│ │ │ │ ├── page.module.css
│ │ │ │ ├── globals.css
│ │ │ │ ├── favicon.ico
│ │ │ │ ├── fonts
│ │ │ │ ├── GeistVF.woff
│ │ │ │ └── GeistMonoVF.woff
│ │ │ │ ├── dashboard
│ │ │ │ ├── page.tsx
│ │ │ │ ├── appointment
│ │ │ │ │ ├── approved
│ │ │ │ │ │ └── page.tsx
│ │ │ │ │ ├── pending
│ │ │ │ │ │ └── page.tsx
│ │ │ │ │ └── cancelled
│ │ │ │ │ │ └── page.tsx
│ │ │ │ └── layout.tsx
│ │ │ │ ├── login
│ │ │ │ └── page.tsx
│ │ │ │ ├── page.tsx
│ │ │ │ └── update
│ │ │ │ └── password
│ │ │ │ └── [teacherId]
│ │ │ │ └── page.tsx
│ │ ├── next.config.js
│ │ ├── postcss.config.mjs
│ │ ├── eslint.config.js
│ │ ├── tsconfig.json
│ │ ├── .gitignore
│ │ └── package.json
│ └── server
│ │ ├── .env.example
│ │ ├── eslint.config.mjs
│ │ ├── tsconfig.json
│ │ ├── src
│ │ ├── middleware
│ │ │ └── checkRoutes.ts
│ │ ├── utils
│ │ │ └── cookieOptions.ts
│ │ ├── index.ts
│ │ ├── controller
│ │ │ ├── db.controller.ts
│ │ │ └── start.controller.ts
│ │ ├── routes
│ │ │ ├── auth.route.ts
│ │ │ ├── teacher.route.ts
│ │ │ ├── student.route.ts
│ │ │ └── admin.route.ts
│ │ └── statusCode
│ │ │ └── response.ts
│ │ ├── .gitignore
│ │ └── package.json
├── .eslintignore
├── packages
│ ├── ui
│ │ ├── src
│ │ │ ├── styles
│ │ │ │ └── global.css
│ │ │ ├── Toast.tsx
│ │ │ ├── buttons
│ │ │ │ └── button.tsx
│ │ │ ├── Footer.tsx
│ │ │ ├── context
│ │ │ │ └── UserContext.tsx
│ │ │ └── Hero.tsx
│ │ ├── postcss.config.mjs
│ │ ├── eslint.config.mjs
│ │ ├── tsconfig.json
│ │ └── turbo
│ │ │ └── generators
│ │ │ ├── templates
│ │ │ └── component.hbs
│ │ │ └── config.ts
│ ├── eslint-config
│ │ ├── README.md
│ │ ├── package.json
│ │ └── base.js
│ ├── db
│ │ ├── .gitignore
│ │ ├── .env.example
│ │ ├── prisma
│ │ │ └── migrations
│ │ │ │ └── migration_lock.toml
│ │ ├── tsconfig.json
│ │ ├── index.ts
│ │ └── package.json
│ ├── types
│ │ ├── src
│ │ │ ├── client
│ │ │ │ ├── index.ts
│ │ │ │ ├── enum.ts
│ │ │ │ ├── auth.validator.ts
│ │ │ │ ├── Props.ts
│ │ │ │ └── Types.ts
│ │ │ └── server
│ │ │ │ ├── index.ts
│ │ │ │ └── validator
│ │ │ │ ├── auth.validator.ts
│ │ │ │ └── student.request.validator.ts
│ │ ├── eslint.config.mjs
│ │ ├── tsconfig.json
│ │ └── package.json
│ ├── utils
│ │ ├── eslint.config.mjs
│ │ ├── src
│ │ │ └── api.ts
│ │ ├── tsconfig.json
│ │ └── package.json
│ └── typescript-config
│ │ ├── react-library.json
│ │ ├── package.json
│ │ ├── nextjs.json
│ │ └── base.json
├── .lintstagedrc
├── .prettierignore
├── public
│ ├── admin1.png
│ ├── admin2.png
│ ├── admin3.png
│ ├── admin4.png
│ ├── admin5.png
│ ├── admin6.png
│ ├── admin7.png
│ ├── student1.png
│ ├── student2.png
│ ├── student3.png
│ ├── student4.png
│ ├── student5.png
│ ├── student6.png
│ ├── student7.png
│ ├── teacher1.png
│ ├── teacher2.png
│ ├── teacher3.png
│ ├── teacher4.png
│ ├── teacher5.png
│ ├── teacher6.png
│ ├── teacher7.png
│ └── architecture.png
├── .prettierrc
├── .eslintrc.js
├── turbo.json
├── .gitignore
└── package.json
├── 03.tic-tac-toe
├── apps
│ ├── tic-tac-toe
│ │ ├── src
│ │ │ ├── app
│ │ │ │ ├── page.module.css
│ │ │ │ ├── globals.css
│ │ │ │ ├── favicon.ico
│ │ │ │ ├── fonts
│ │ │ │ │ ├── GeistVF.woff
│ │ │ │ │ └── GeistMonoVF.woff
│ │ │ │ ├── page.tsx
│ │ │ │ └── room
│ │ │ │ │ └── [id]
│ │ │ │ │ └── page.tsx
│ │ │ ├── utils
│ │ │ │ ├── socket.ts
│ │ │ │ └── gameLogic.ts
│ │ │ ├── types
│ │ │ │ └── index.ts
│ │ │ └── components
│ │ │ │ ├── Cell.tsx
│ │ │ │ └── ResultDisplay.tsx
│ │ ├── public
│ │ │ ├── ui-1.png
│ │ │ ├── ui-2.png
│ │ │ ├── example-1.png
│ │ │ └── example-2.png
│ │ ├── next.config.js
│ │ ├── postcss.config.mjs
│ │ ├── eslint.config.js
│ │ ├── tsconfig.json
│ │ ├── .gitignore
│ │ └── package.json
│ └── server
│ │ ├── .env.example
│ │ ├── eslint.config.mjs
│ │ ├── tsconfig.json
│ │ ├── .gitignore
│ │ └── package.json
├── .prettierignore
├── packages
│ ├── eslint-config
│ │ ├── README.md
│ │ ├── package.json
│ │ └── base.js
│ └── typescript-config
│ │ ├── react-library.json
│ │ ├── package.json
│ │ ├── nextjs.json
│ │ └── base.json
├── .prettierrc
├── turbo.json
├── .gitignore
└── package.json
└── 07.portfolio
├── .eslintrc.json
├── src
├── app
│ ├── globals.css
│ ├── favicon.ico
│ ├── page.tsx
│ └── layout.tsx
├── types
│ ├── spotlightType.ts
│ ├── dockType.ts
│ ├── projectType.ts
│ └── skillType.ts
├── stores
│ ├── bootWords.ts
│ └── projectStore.ts
├── lib
│ └── utils.ts
├── screens
│ ├── Landing.tsx
│ └── BootScreen.tsx
└── components
│ ├── elements
│ ├── skill
│ │ ├── Circle.tsx
│ │ └── cards
│ │ │ └── CardType2.tsx
│ └── project
│ │ └── Project.tsx
│ └── ui
│ ├── Dock.tsx
│ └── Skills.tsx
├── public
├── snapshot.png
├── alfaarghyaAvtar.png
├── projects
│ ├── blog-web.png
│ ├── readhubmd.png
│ ├── typing-test.png
│ └── alfa-leetcode-api.png
├── svg
│ ├── front-html.svg
│ ├── front-css.svg
│ ├── front-tailwind.svg
│ ├── back-mongodb.svg
│ └── back-express.svg
└── dockSvg
│ ├── terminal-dock.svg
│ ├── email-circle-fill-svgrepo-com.svg
│ ├── dock-menu.svg
│ ├── linkedin-dock.svg
│ ├── mail-5-svgrepo-com.svg
│ └── cv-dock.svg
├── next.config.mjs
├── postcss.config.mjs
├── .gitignore
├── README.md
├── tsconfig.json
└── package.json
/04.chat-app/.npmrc:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/06.blog-web/.npmrc:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/01.WeatherApp/src/App.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/02.Calculator/src/App.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/06.blog-web/apps/web/src/App.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/04.chat-app/apps/chatapp/src/app/page.module.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/.npmrc:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/tic-tac-toe/src/app/page.module.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/06.blog-web/apps/web/src/index.css:
--------------------------------------------------------------------------------
1 | @import "tailwindcss";
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/server/.env.example:
--------------------------------------------------------------------------------
1 | #server port
2 | PORT =
--------------------------------------------------------------------------------
/01.WeatherApp/.env.example:
--------------------------------------------------------------------------------
1 | #openweathermap API key
2 | VITE_API_KEY=
--------------------------------------------------------------------------------
/04.chat-app/apps/chatapp/src/app/globals.css:
--------------------------------------------------------------------------------
1 | @import "tailwindcss";
--------------------------------------------------------------------------------
/04.chat-app/packages/utils/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./encryption";
--------------------------------------------------------------------------------
/01.WeatherApp/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/02.Calculator/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/tic-tac-toe/src/app/globals.css:
--------------------------------------------------------------------------------
1 | @import "tailwindcss";
--------------------------------------------------------------------------------
/04.chat-app/.eslintignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | dist
3 | .next
4 | build
5 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/admin/src/app/page.module.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/06.blog-web/.eslintignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | dist
3 | .next
4 | build
5 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/student/src/app/page.module.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/teacher/src/app/page.module.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/04.chat-app/.lintstagedrc:
--------------------------------------------------------------------------------
1 | {
2 | "**/*.{ts,tsx,json}": ["prettier --write"]
3 | }
--------------------------------------------------------------------------------
/06.blog-web/.lintstagedrc:
--------------------------------------------------------------------------------
1 | {
2 | "**/*.{ts,tsx,json}": ["prettier --write"]
3 | }
--------------------------------------------------------------------------------
/06.blog-web/apps/web/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/07.portfolio/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "next/core-web-vitals"
3 | }
4 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/admin/src/app/globals.css:
--------------------------------------------------------------------------------
1 | @import "tailwindcss";
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/student/src/app/globals.css:
--------------------------------------------------------------------------------
1 | @import "tailwindcss";
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/teacher/src/app/globals.css:
--------------------------------------------------------------------------------
1 | @import "tailwindcss";
--------------------------------------------------------------------------------
/01.WeatherApp/src/index.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/.eslintignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | dist
3 | .next
4 | build
5 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/ui/src/styles/global.css:
--------------------------------------------------------------------------------
1 | @import "tailwindcss";
--------------------------------------------------------------------------------
/02.Calculator/src/index.css:
--------------------------------------------------------------------------------
1 | @import "tailwindcss";
2 | @custom-variant dark (&:where(.dark, .dark *));
--------------------------------------------------------------------------------
/04.chat-app/packages/utils/.env.example:
--------------------------------------------------------------------------------
1 | # secret key to encrypt or decrypt message
2 | SECRET_KEY =
--------------------------------------------------------------------------------
/07.portfolio/src/app/globals.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/.lintstagedrc:
--------------------------------------------------------------------------------
1 | {
2 | "**/*.{ts,tsx,json}": ["prettier --write"]
3 | }
--------------------------------------------------------------------------------
/04.chat-app/public/chat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/public/chat.png
--------------------------------------------------------------------------------
/04.chat-app/packages/db/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | # Keep environment variables out of version control
3 | .env
4 |
--------------------------------------------------------------------------------
/04.chat-app/public/dm-chat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/public/dm-chat.png
--------------------------------------------------------------------------------
/04.chat-app/public/signin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/public/signin.png
--------------------------------------------------------------------------------
/04.chat-app/public/signup-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/public/signup-1.png
--------------------------------------------------------------------------------
/04.chat-app/public/signup-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/public/signup-2.png
--------------------------------------------------------------------------------
/06.blog-web/public/blogs1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/06.blog-web/public/blogs1.png
--------------------------------------------------------------------------------
/06.blog-web/public/blogs2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/06.blog-web/public/blogs2.png
--------------------------------------------------------------------------------
/06.blog-web/public/blogs3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/06.blog-web/public/blogs3.png
--------------------------------------------------------------------------------
/06.blog-web/public/blogs4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/06.blog-web/public/blogs4.png
--------------------------------------------------------------------------------
/06.blog-web/public/signin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/06.blog-web/public/signin.png
--------------------------------------------------------------------------------
/06.blog-web/public/signup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/06.blog-web/public/signup.png
--------------------------------------------------------------------------------
/04.chat-app/public/join-room.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/public/join-room.png
--------------------------------------------------------------------------------
/04.chat-app/public/room-chat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/public/room-chat.png
--------------------------------------------------------------------------------
/06.blog-web/public/read-blog.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/06.blog-web/public/read-blog.png
--------------------------------------------------------------------------------
/07.portfolio/public/snapshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/07.portfolio/public/snapshot.png
--------------------------------------------------------------------------------
/07.portfolio/src/app/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/07.portfolio/src/app/favicon.ico
--------------------------------------------------------------------------------
/04.chat-app/packages/eslint-config/README.md:
--------------------------------------------------------------------------------
1 | # `@turbo/eslint-config`
2 |
3 | Collection of internal eslint configurations.
4 |
--------------------------------------------------------------------------------
/04.chat-app/public/architecture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/public/architecture.png
--------------------------------------------------------------------------------
/04.chat-app/public/chat-app-demo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/public/chat-app-demo.png
--------------------------------------------------------------------------------
/04.chat-app/public/create-room.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/public/create-room.png
--------------------------------------------------------------------------------
/04.chat-app/public/search-user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/public/search-user.png
--------------------------------------------------------------------------------
/06.blog-web/packages/eslint-config/README.md:
--------------------------------------------------------------------------------
1 | # `@turbo/eslint-config`
2 |
3 | Collection of internal eslint configurations.
4 |
--------------------------------------------------------------------------------
/06.blog-web/public/blog-create.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/06.blog-web/public/blog-create.png
--------------------------------------------------------------------------------
/06.blog-web/public/blog-update.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/06.blog-web/public/blog-update.png
--------------------------------------------------------------------------------
/07.portfolio/src/types/spotlightType.ts:
--------------------------------------------------------------------------------
1 | export type spotlightType = {
2 | className?: string;
3 | fill?: string;
4 | };
5 |
--------------------------------------------------------------------------------
/01.WeatherApp/public/weather-demo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/01.WeatherApp/public/weather-demo.png
--------------------------------------------------------------------------------
/03.tic-tac-toe/.prettierignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .dist
3 | build
4 | .next
5 |
6 | *.yml
7 | *.yaml
8 |
9 | *.env
10 | .env
--------------------------------------------------------------------------------
/03.tic-tac-toe/packages/eslint-config/README.md:
--------------------------------------------------------------------------------
1 | # `@turbo/eslint-config`
2 |
3 | Collection of internal eslint configurations.
4 |
--------------------------------------------------------------------------------
/04.chat-app/.prettierignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .dist
3 | build
4 | .next
5 |
6 | *.yml
7 | *.yaml
8 |
9 | *.env
10 | .env
--------------------------------------------------------------------------------
/04.chat-app/apps/server/.env.example:
--------------------------------------------------------------------------------
1 | #server port
2 | PORT =
3 |
4 | # JWT Secret for authenticate
5 | JWT_SECRET = "mySecretJWT"
--------------------------------------------------------------------------------
/06.blog-web/.prettierignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .dist
3 | build
4 | .next
5 |
6 | *.yml
7 | *.yaml
8 |
9 | *.env
10 | .env
--------------------------------------------------------------------------------
/01.WeatherApp/postcss.config.js:
--------------------------------------------------------------------------------
1 | export default {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
7 |
--------------------------------------------------------------------------------
/02.Calculator/public/calculator-demo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/02.Calculator/public/calculator-demo.png
--------------------------------------------------------------------------------
/06.blog-web/apps/server/.env.example:
--------------------------------------------------------------------------------
1 | #server port
2 | PORT = 8080
3 |
4 | # JWT Secret for authenticate
5 | JWT_SECRET = "mySecretJWT"
--------------------------------------------------------------------------------
/06.blog-web/packages/db/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | # Keep environment variables out of version control
3 | .env
4 |
5 | /prisma/generated
--------------------------------------------------------------------------------
/06.blog-web/public/blog-read-commnet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/06.blog-web/public/blog-read-commnet.png
--------------------------------------------------------------------------------
/07.portfolio/next.config.mjs:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {};
3 |
4 | export default nextConfig;
5 |
--------------------------------------------------------------------------------
/07.portfolio/public/alfaarghyaAvtar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/07.portfolio/public/alfaarghyaAvtar.png
--------------------------------------------------------------------------------
/07.portfolio/public/projects/blog-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/07.portfolio/public/projects/blog-web.png
--------------------------------------------------------------------------------
/07.portfolio/public/projects/readhubmd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/07.portfolio/public/projects/readhubmd.png
--------------------------------------------------------------------------------
/04.chat-app/apps/chatapp/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {};
3 |
4 | export default nextConfig;
5 |
--------------------------------------------------------------------------------
/04.chat-app/apps/chatapp/src/app/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/apps/chatapp/src/app/favicon.ico
--------------------------------------------------------------------------------
/07.portfolio/public/projects/typing-test.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/07.portfolio/public/projects/typing-test.png
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/tic-tac-toe/public/ui-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/03.tic-tac-toe/apps/tic-tac-toe/public/ui-1.png
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/tic-tac-toe/public/ui-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/03.tic-tac-toe/apps/tic-tac-toe/public/ui-2.png
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/tic-tac-toe/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {};
3 |
4 | export default nextConfig;
5 |
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/tic-tac-toe/src/app/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/03.tic-tac-toe/apps/tic-tac-toe/src/app/favicon.ico
--------------------------------------------------------------------------------
/04.chat-app/apps/chatapp/postcss.config.mjs:
--------------------------------------------------------------------------------
1 | const config = {
2 | plugins: {
3 | "@tailwindcss/postcss": {},
4 | },
5 | };
6 | export default config;
--------------------------------------------------------------------------------
/04.chat-app/apps/chatapp/src/app/fonts/GeistVF.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/apps/chatapp/src/app/fonts/GeistVF.woff
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/.prettierignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .dist
3 | build
4 | .next
5 |
6 | *.yml
7 | *.yaml
8 |
9 | *.env
10 | .env
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/eslint-config/README.md:
--------------------------------------------------------------------------------
1 | # `@turbo/eslint-config`
2 |
3 | Collection of internal eslint configurations.
4 |
--------------------------------------------------------------------------------
/07.portfolio/public/projects/alfa-leetcode-api.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/07.portfolio/public/projects/alfa-leetcode-api.png
--------------------------------------------------------------------------------
/07.portfolio/src/types/dockType.ts:
--------------------------------------------------------------------------------
1 | export type dockType = {
2 | title: string;
3 | icon: string;
4 | href: string;
5 | newTab: boolean;
6 | };
7 |
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/tic-tac-toe/postcss.config.mjs:
--------------------------------------------------------------------------------
1 | const config = {
2 | plugins: {
3 | "@tailwindcss/postcss": {},
4 | },
5 | };
6 | export default config;
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/tic-tac-toe/public/example-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/03.tic-tac-toe/apps/tic-tac-toe/public/example-1.png
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/tic-tac-toe/public/example-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/03.tic-tac-toe/apps/tic-tac-toe/public/example-2.png
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/server/.env.example:
--------------------------------------------------------------------------------
1 | #server port
2 | PORT = 8080
3 |
4 | # JWT Secret for authenticate
5 | JWT_SECRET = "mySecretJWT"
--------------------------------------------------------------------------------
/04.chat-app/apps/chatapp/src/app/fonts/GeistMonoVF.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/04.chat-app/apps/chatapp/src/app/fonts/GeistMonoVF.woff
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/db/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | # Keep environment variables out of version control
3 | .env
4 |
5 | /prisma/generated
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/public/admin1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/admin1.png
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/public/admin2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/admin2.png
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/public/admin3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/admin3.png
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/public/admin4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/admin4.png
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/public/admin5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/admin5.png
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/public/admin6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/admin6.png
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/public/admin7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/admin7.png
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/tic-tac-toe/src/app/fonts/GeistVF.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/03.tic-tac-toe/apps/tic-tac-toe/src/app/fonts/GeistVF.woff
--------------------------------------------------------------------------------
/04.chat-app/packages/db/.env.example:
--------------------------------------------------------------------------------
1 | #docker-postgres connection string
2 | DATABASE_URL="postgresql://postgres:chatappadminpassword@localhost:5432/chatAppDB?schema=public"
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/admin/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {};
3 |
4 | export default nextConfig;
5 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/public/student1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/student1.png
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/public/student2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/student2.png
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/public/student3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/student3.png
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/public/student4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/student4.png
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/public/student5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/student5.png
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/public/student6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/student6.png
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/public/student7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/student7.png
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/public/teacher1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/teacher1.png
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/public/teacher2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/teacher2.png
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/public/teacher3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/teacher3.png
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/public/teacher4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/teacher4.png
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/public/teacher5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/teacher5.png
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/public/teacher6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/teacher6.png
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/public/teacher7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/teacher7.png
--------------------------------------------------------------------------------
/06.blog-web/packages/db/.env.example:
--------------------------------------------------------------------------------
1 | #docker-postgres connection string
2 | DATABASE_URL="postgresql://postgres:blogwebadminpassword@localhost:5432/blogwebDB?schema=public"
--------------------------------------------------------------------------------
/01.WeatherApp/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "files": [],
3 | "references": [
4 | { "path": "./tsconfig.app.json" },
5 | { "path": "./tsconfig.node.json" }
6 | ]
7 | }
8 |
--------------------------------------------------------------------------------
/02.Calculator/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "files": [],
3 | "references": [
4 | { "path": "./tsconfig.app.json" },
5 | { "path": "./tsconfig.node.json" }
6 | ]
7 | }
8 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/student/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {};
3 |
4 | export default nextConfig;
5 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/teacher/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {};
3 |
4 | export default nextConfig;
5 |
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/server/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import { config } from "@oms/eslint-config/base";
2 |
3 | /** @type {import("eslint").Linter.Config} */
4 | export default config;
5 |
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/tic-tac-toe/src/app/fonts/GeistMonoVF.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/03.tic-tac-toe/apps/tic-tac-toe/src/app/fonts/GeistMonoVF.woff
--------------------------------------------------------------------------------
/04.chat-app/apps/server/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import { config } from "@chatApp/eslint-config/base";
2 |
3 | /** @type {import("eslint").Linter.Config} */
4 | export default config;
5 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/admin/postcss.config.mjs:
--------------------------------------------------------------------------------
1 | const config = {
2 | plugins: {
3 | "@tailwindcss/postcss": {},
4 | },
5 | };
6 | export default config;
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/student/postcss.config.mjs:
--------------------------------------------------------------------------------
1 | const config = {
2 | plugins: {
3 | "@tailwindcss/postcss": {},
4 | },
5 | };
6 | export default config;
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/teacher/postcss.config.mjs:
--------------------------------------------------------------------------------
1 | const config = {
2 | plugins: {
3 | "@tailwindcss/postcss": {},
4 | },
5 | };
6 | export default config;
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/ui/postcss.config.mjs:
--------------------------------------------------------------------------------
1 | const config = {
2 | plugins: {
3 | "@tailwindcss/postcss": {},
4 | },
5 | };
6 | export default config;
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/public/architecture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/public/architecture.png
--------------------------------------------------------------------------------
/06.blog-web/apps/server/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import { config } from "@blog-web/eslint-config/base";
2 |
3 | /** @type {import("eslint").Linter.Config} */
4 | export default config;
5 |
--------------------------------------------------------------------------------
/06.blog-web/apps/web/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "files": [],
3 | "references": [
4 | { "path": "./tsconfig.app.json" },
5 | { "path": "./tsconfig.node.json" }
6 | ]
7 | }
8 |
--------------------------------------------------------------------------------
/04.chat-app/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": false,
3 | "printWidth": 120,
4 | "bracketSpacing": true,
5 | "tabWidth": 2,
6 | "trailingComma": "es5",
7 | "semi": true
8 | }
9 |
--------------------------------------------------------------------------------
/04.chat-app/packages/types/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import { config } from "@chatApp/eslint-config/base";
2 |
3 | /** @type {import("eslint").Linter.Config} */
4 | export default config;
5 |
--------------------------------------------------------------------------------
/04.chat-app/packages/utils/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import { config } from "@chatApp/eslint-config/base";
2 |
3 | /** @type {import("eslint").Linter.Config} */
4 | export default config;
5 |
--------------------------------------------------------------------------------
/06.blog-web/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": false,
3 | "printWidth": 120,
4 | "bracketSpacing": true,
5 | "tabWidth": 2,
6 | "trailingComma": "es5",
7 | "semi": true
8 | }
9 |
--------------------------------------------------------------------------------
/06.blog-web/packages/types/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import { config } from "@blog-web/eslint-config/base";
2 |
3 | /** @type {import("eslint").Linter.Config} */
4 | export default config;
5 |
--------------------------------------------------------------------------------
/03.tic-tac-toe/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": false,
3 | "printWidth": 120,
4 | "bracketSpacing": true,
5 | "tabWidth": 2,
6 | "trailingComma": "es5",
7 | "semi": true
8 | }
9 |
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/tic-tac-toe/src/utils/socket.ts:
--------------------------------------------------------------------------------
1 | import { io } from "socket.io-client";
2 | export const socket = io("http://localhost:3001"); // Ensure your Socket.IO server is running
3 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/types/src/client/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./Props";
2 | export * from "./enum";
3 | export * from "./Types";
4 | export * from "./auth.validator";
--------------------------------------------------------------------------------
/06.blog-web/packages/types/src/server/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./validators/auth.validator";
2 | export * from "./validators/blog.validator";
3 | export * from "./validators/comment.validator";
--------------------------------------------------------------------------------
/04.chat-app/apps/chatapp/eslint.config.js:
--------------------------------------------------------------------------------
1 | import { nextJsConfig } from "@chatApp/eslint-config/next-js";
2 |
3 | /** @type {import("eslint").Linter.Config} */
4 | export default nextJsConfig;
5 |
--------------------------------------------------------------------------------
/04.chat-app/packages/db/prisma/migrations/migration_lock.toml:
--------------------------------------------------------------------------------
1 | # Please do not edit this file manually
2 | # It should be added in your version-control system (e.g., Git)
3 | provider = "postgresql"
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/admin/src/app/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/apps/admin/src/app/favicon.ico
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/student/src/app/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/apps/student/src/app/favicon.ico
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/teacher/src/app/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/apps/teacher/src/app/favicon.ico
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/db/.env.example:
--------------------------------------------------------------------------------
1 | #docker-postgres connection string
2 | DATABASE_URL="postgresql://postgres:stbaadminpassword@localhost:5432/chatAppDB?schema=public"
--------------------------------------------------------------------------------
/07.portfolio/postcss.config.mjs:
--------------------------------------------------------------------------------
1 | /** @type {import('postcss-load-config').Config} */
2 | const config = {
3 | plugins: {
4 | tailwindcss: {},
5 | },
6 | };
7 |
8 | export default config;
9 |
--------------------------------------------------------------------------------
/06.blog-web/packages/db/prisma/migrations/migration_lock.toml:
--------------------------------------------------------------------------------
1 | # Please do not edit this file manually
2 | # It should be added in your version-control system (e.g., Git)
3 | provider = "postgresql"
4 |
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/tic-tac-toe/eslint.config.js:
--------------------------------------------------------------------------------
1 | import { nextJsConfig } from "@tic-tac-toe/eslint-config/next-js";
2 |
3 | /** @type {import("eslint").Linter.Config} */
4 | export default nextJsConfig;
5 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/admin/src/app/fonts/GeistVF.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/apps/admin/src/app/fonts/GeistVF.woff
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/server/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import { config } from "@stba/eslint-config/base";
2 |
3 | /** @type {import("eslint").Linter.Config} */
4 | export default config;
5 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/types/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import { config } from "@stba/eslint-config/base";
2 |
3 | /** @type {import("eslint").Linter.Config} */
4 | export default config;
5 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/utils/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import { config } from "@stba/eslint-config/base";
2 |
3 | /** @type {import("eslint").Linter.Config} */
4 | export default config;
5 |
--------------------------------------------------------------------------------
/06.blog-web/apps/web/src/utils/api.ts:
--------------------------------------------------------------------------------
1 | import axios from 'axios';
2 |
3 | export const api = axios.create({
4 | baseURL: 'http://localhost:8080/api',
5 | withCredentials: true,
6 | });
7 |
8 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/student/src/app/fonts/GeistVF.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/apps/student/src/app/fonts/GeistVF.woff
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/teacher/src/app/fonts/GeistVF.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/apps/teacher/src/app/fonts/GeistVF.woff
--------------------------------------------------------------------------------
/07.portfolio/src/stores/bootWords.ts:
--------------------------------------------------------------------------------
1 | export const bootWords = [
2 | "Hello",
3 | "こんにちは",
4 | "Bonjour",
5 | "안녕하세요",
6 | "Hallo",
7 | "नमस्ते",
8 | "Ciao",
9 | "নমস্কার",
10 | ];
11 |
--------------------------------------------------------------------------------
/01.WeatherApp/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import react from '@vitejs/plugin-react'
3 |
4 | // https://vite.dev/config/
5 | export default defineConfig({
6 | plugins: [react()],
7 | })
8 |
--------------------------------------------------------------------------------
/04.chat-app/apps/chatapp/src/lib/axios.ts:
--------------------------------------------------------------------------------
1 | import axios from 'axios';
2 |
3 | const api = axios.create({
4 | baseURL: 'http://localhost:8080/api',
5 | withCredentials: true,
6 | });
7 |
8 | export default api;
9 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": false,
3 | "printWidth": 120,
4 | "bracketSpacing": true,
5 | "tabWidth": 2,
6 | "trailingComma": "es5",
7 | "semi": true
8 | }
9 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/admin/eslint.config.js:
--------------------------------------------------------------------------------
1 | import { nextJsConfig } from "@stba/eslint-config/next-js";
2 |
3 | /** @type {import("eslint").Linter.Config} */
4 | export default nextJsConfig;
5 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/admin/src/app/fonts/GeistMonoVF.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/apps/admin/src/app/fonts/GeistMonoVF.woff
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/ui/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import { config } from "@stba/eslint-config/react-internal";
2 |
3 | /** @type {import("eslint").Linter.Config} */
4 | export default config;
5 |
--------------------------------------------------------------------------------
/07.portfolio/src/lib/utils.ts:
--------------------------------------------------------------------------------
1 | import { ClassValue, clsx } from "clsx";
2 | import { twMerge } from "tailwind-merge";
3 |
4 | export function cn(...inputs: ClassValue[]) {
5 | return twMerge(clsx(inputs));
6 | }
7 |
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/tic-tac-toe/src/app/page.tsx:
--------------------------------------------------------------------------------
1 | import RoomForm from "../components/RoomForm";
2 |
3 | const Home = () => {
4 | return (
5 |
6 | );
7 | }
8 |
9 | export default Home;
10 |
--------------------------------------------------------------------------------
/04.chat-app/packages/typescript-config/react-library.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/tsconfig",
3 | "extends": "./base.json",
4 | "compilerOptions": {
5 | "jsx": "react-jsx"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/student/eslint.config.js:
--------------------------------------------------------------------------------
1 | import { nextJsConfig } from "@stba/eslint-config/next-js";
2 |
3 | /** @type {import("eslint").Linter.Config} */
4 | export default nextJsConfig;
5 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/student/src/app/fonts/GeistMonoVF.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/apps/student/src/app/fonts/GeistMonoVF.woff
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/teacher/eslint.config.js:
--------------------------------------------------------------------------------
1 | import { nextJsConfig } from "@stba/eslint-config/next-js";
2 |
3 | /** @type {import("eslint").Linter.Config} */
4 | export default nextJsConfig;
5 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/teacher/src/app/fonts/GeistMonoVF.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfaarghya/UMIP26951/main/05.student-teacher-booking-appointment/apps/teacher/src/app/fonts/GeistMonoVF.woff
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/ui/src/Toast.tsx:
--------------------------------------------------------------------------------
1 | import { Toaster } from "sonner";
2 |
3 | const Toast = () => {
4 | return
5 | }
6 |
7 | export default Toast
--------------------------------------------------------------------------------
/06.blog-web/packages/typescript-config/react-library.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/tsconfig",
3 | "extends": "./base.json",
4 | "compilerOptions": {
5 | "jsx": "react-jsx"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/03.tic-tac-toe/packages/typescript-config/react-library.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/tsconfig",
3 | "extends": "./base.json",
4 | "compilerOptions": {
5 | "jsx": "react-jsx"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/db/prisma/migrations/migration_lock.toml:
--------------------------------------------------------------------------------
1 | # Please do not edit this file manually
2 | # It should be added in your version-control system (e.g., Git)
3 | provider = "postgresql"
4 |
--------------------------------------------------------------------------------
/01.WeatherApp/src/App.tsx:
--------------------------------------------------------------------------------
1 | import "./App.css";
2 | import Weather from "./UI/weather";
3 |
4 | function App() {
5 | return (
6 | <>
7 |
8 | >
9 | );
10 | }
11 |
12 | export default App;
13 |
--------------------------------------------------------------------------------
/04.chat-app/apps/server/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@chatApp/typescript-config/base.json",
3 | "compilerOptions": {
4 | "outDir": "dist"
5 | },
6 | "include": ["src"],
7 | "exclude": ["node_modules", "dist"]
8 | }
9 |
--------------------------------------------------------------------------------
/06.blog-web/apps/server/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@blog-web/typescript-config/base.json",
3 | "compilerOptions": {
4 | "outDir": "dist"
5 | },
6 | "include": ["src"],
7 | "exclude": ["node_modules", "dist"]
8 | }
9 |
--------------------------------------------------------------------------------
/06.blog-web/packages/typescript-config/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@blog-web/typescript-config",
3 | "version": "0.0.0",
4 | "private": true,
5 | "license": "MIT",
6 | "publishConfig": {
7 | "access": "public"
8 | }
9 | }
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/server/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@tic-tac-toe/typescript-config/base.json",
3 | "compilerOptions": {
4 | "outDir": "dist"
5 | },
6 | "include": ["src"],
7 | "exclude": ["node_modules", "dist"]
8 | }
9 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/utils/src/api.ts:
--------------------------------------------------------------------------------
1 | import axios from 'axios';
2 |
3 | const api = axios.create({
4 | baseURL: 'http://localhost:8080/api',
5 | withCredentials: true,
6 | });
7 |
8 | export default api;
9 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/typescript-config/react-library.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/tsconfig",
3 | "extends": "./base.json",
4 | "compilerOptions": {
5 | "jsx": "react-jsx"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/04.chat-app/packages/typescript-config/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@chatApp/typescript-config",
3 | "version": "0.0.0",
4 | "private": true,
5 | "license": "MIT",
6 | "publishConfig": {
7 | "access": "public"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/03.tic-tac-toe/packages/typescript-config/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@tic-tac-toe/typescript-config",
3 | "version": "0.0.0",
4 | "private": true,
5 | "license": "MIT",
6 | "publishConfig": {
7 | "access": "public"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/04.chat-app/packages/types/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@chatApp/typescript-config/react-library.json",
3 | "compilerOptions": {
4 | "outDir": "dist"
5 | },
6 | "include": ["src"],
7 | "exclude": ["node_modules", "dist"]
8 | }
--------------------------------------------------------------------------------
/04.chat-app/packages/utils/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@chatApp/typescript-config/react-library.json",
3 | "compilerOptions": {
4 | "outDir": "dist"
5 | },
6 | "include": ["src"],
7 | "exclude": ["node_modules", "dist"]
8 | }
--------------------------------------------------------------------------------
/06.blog-web/packages/types/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@blog-web/typescript-config/react-library.json",
3 | "compilerOptions": {
4 | "outDir": "dist"
5 | },
6 | "include": ["src"],
7 | "exclude": ["node_modules", "dist"]
8 | }
--------------------------------------------------------------------------------
/04.chat-app/packages/db/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@chatApp/typescript-config/react-library.json",
3 | "compilerOptions": {
4 | "outDir": "dist"
5 | },
6 | "include": ["src"],
7 | "exclude": ["node_modules", "dist"]
8 | }
9 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/server/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@stba/typescript-config/base.json",
3 | "compilerOptions": {
4 | "outDir": "dist"
5 | },
6 | "include": ["src"],
7 | "exclude": ["node_modules", "dist"]
8 | }
9 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/typescript-config/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@stba/typescript-config",
3 | "version": "0.0.0",
4 | "private": true,
5 | "license": "MIT",
6 | "publishConfig": {
7 | "access": "public"
8 | }
9 | }
--------------------------------------------------------------------------------
/06.blog-web/packages/db/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@blog-web/typescript-config/react-library.json",
3 | "compilerOptions": {
4 | "outDir": "dist"
5 | },
6 | "include": ["src"],
7 | "exclude": ["node_modules", "dist"]
8 | }
9 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/ui/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@stba/typescript-config/react-library.json",
3 | "compilerOptions": {
4 | "outDir": "dist"
5 | },
6 | "include": ["src"],
7 | "exclude": ["node_modules", "dist"]
8 | }
9 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/admin/src/app/dashboard/teacher/page.tsx:
--------------------------------------------------------------------------------
1 | import AdminTeacherPage from "@stba/ui/Pages/AdminTeacherPage";
2 |
3 | const Page = () => {
4 | return <>
5 |
6 | >
7 | };
8 |
9 | export default Page;
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/utils/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@stba/typescript-config/base.json",
3 | "compilerOptions": {
4 | "outDir": "dist"
5 | },
6 | "include": ["src"],
7 | "exclude": ["node_modules", "dist"]
8 | }
--------------------------------------------------------------------------------
/01.WeatherApp/tailwind.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | export default {
3 | content: [
4 | "./index.html",
5 | "./src/**/*.{js,ts,jsx,tsx}",
6 | ],
7 | theme: {
8 | extend: {},
9 | },
10 | plugins: [],
11 | }
12 |
13 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/types/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@stba/typescript-config/react-library.json",
3 | "compilerOptions": {
4 | "outDir": "dist"
5 | },
6 | "include": ["src"],
7 | "exclude": ["node_modules", "dist"]
8 | }
--------------------------------------------------------------------------------
/02.Calculator/src/types/index.ts:
--------------------------------------------------------------------------------
1 | export interface DisplayProps {
2 | value: string;
3 | }
4 |
5 | export interface ButtonProps {
6 | value: string;
7 | onClick: (value: string) => void;
8 | }
9 |
10 | export interface HistoryProps {
11 | history: string[];
12 | }
13 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/student/src/app/dashboard/appointment/page.tsx:
--------------------------------------------------------------------------------
1 | import StudentAppointments from "@stba/ui/Pages/StudentAppointmentsPage";
2 |
3 | const Page = () => {
4 | return <>
5 |
6 | >
7 | };
8 |
9 | export default Page
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/db/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@stba/typescript-config/react-library.json",
3 | "compilerOptions": {
4 | "outDir": "dist"
5 | },
6 | "include": ["src"],
7 | "exclude": ["node_modules", "dist"]
8 | }
9 |
--------------------------------------------------------------------------------
/06.blog-web/apps/web/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import react from '@vitejs/plugin-react'
3 | import tailwindcss from '@tailwindcss/vite'
4 |
5 | // https://vite.dev/config/
6 | export default defineConfig({
7 | plugins: [react(), tailwindcss(),],
8 | })
9 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/types/src/server/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./validator/auth.validator";
2 | export * from "./validator/admin.request.validator";
3 | export * from "./validator/student.request.validator";
4 | export * from "./validator/teacher.request.validator";
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/admin/src/app/dashboard/page.tsx:
--------------------------------------------------------------------------------
1 | const Page = () => {
2 | return <>
3 |
4 |
Select the Dashboard👋
5 |
6 | >
7 | };
8 |
9 | export default Page;
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/student/src/app/dashboard/appointment/create/page.tsx:
--------------------------------------------------------------------------------
1 | import CreateAppointmentPage from "@stba/ui/Pages/CreateAppointmentPage";
2 |
3 | const Page = () => {
4 | return <>
5 |
6 | >
7 | };
8 |
9 | export default Page
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/student/src/app/dashboard/page.tsx:
--------------------------------------------------------------------------------
1 | const Page = () => {
2 | return <>
3 |
4 |
Select the Dashboard👋
5 |
6 | >
7 | };
8 |
9 | export default Page;
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/teacher/src/app/dashboard/page.tsx:
--------------------------------------------------------------------------------
1 | const Page = () => {
2 | return <>
3 |
4 |
Select the Dashboard👋
5 |
6 | >
7 | };
8 |
9 | export default Page;
--------------------------------------------------------------------------------
/04.chat-app/apps/chatapp/src/app/chat/page.tsx:
--------------------------------------------------------------------------------
1 | const ChatHome = () => {
2 | return (
3 |
4 |
Select a room or start a conversation 👋
5 |
6 | );
7 | };
8 |
9 | export default ChatHome;
10 |
--------------------------------------------------------------------------------
/02.Calculator/src/main.tsx:
--------------------------------------------------------------------------------
1 | import { StrictMode } from 'react'
2 | import { createRoot } from 'react-dom/client'
3 | import './index.css'
4 | import App from './App.tsx'
5 |
6 | createRoot(document.getElementById('root')!).render(
7 |
8 |
9 | ,
10 | )
11 |
--------------------------------------------------------------------------------
/01.WeatherApp/src/main.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import ReactDOM from 'react-dom/client'
3 | import App from './App.tsx'
4 | import './index.css'
5 |
6 | ReactDOM.createRoot(document.getElementById('root')!).render(
7 |
8 |
9 | ,
10 | )
11 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/admin/src/app/login/page.tsx:
--------------------------------------------------------------------------------
1 | import { Role } from "@stba/types/client";
2 | import LoginPage from "@stba/ui/Pages/Login";
3 |
4 | const Login = () => {
5 | return <>
6 |
7 | >
8 | };
9 |
10 | export default Login;
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/student/src/app/login/page.tsx:
--------------------------------------------------------------------------------
1 | import { Role } from "@stba/types/client";
2 | import LoginPage from "@stba/ui/Pages/Login";
3 |
4 | const Login = () => {
5 | return <>
6 |
7 | >
8 | };
9 |
10 | export default Login;
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/teacher/src/app/login/page.tsx:
--------------------------------------------------------------------------------
1 | import { Role } from "@stba/types/client";
2 | import LoginPage from "@stba/ui/Pages/Login";
3 |
4 | const Login = () => {
5 | return <>
6 |
7 | >
8 | };
9 |
10 | export default Login;
--------------------------------------------------------------------------------
/02.Calculator/src/App.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import Calculator from "./components/Calculator";
3 |
4 | const App: React.FC = () => (
5 |
6 |
7 |
8 | );
9 |
10 | export default App;
11 |
--------------------------------------------------------------------------------
/02.Calculator/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import react from '@vitejs/plugin-react'
3 | import tailwindcss from '@tailwindcss/vite'
4 |
5 | // https://vite.dev/config/
6 | export default defineConfig({
7 | plugins: [
8 | react(),
9 | tailwindcss(),
10 | ],
11 | })
12 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/ui/turbo/generators/templates/component.hbs:
--------------------------------------------------------------------------------
1 | export const {{ pascalCase name }} = ({ children }: { children: React.ReactNode }) => {
2 | return (
3 |
4 |
{{ pascalCase name }} Component
5 | {children}
6 |
7 | );
8 | };
9 |
--------------------------------------------------------------------------------
/04.chat-app/apps/server/src/middleware/checkRoutes.ts:
--------------------------------------------------------------------------------
1 | import { NextFunction, Request, Response } from "express";
2 |
3 | //check the route on server
4 | const checkRoutes = (req: Request, res: Response, next: NextFunction) => {
5 | console.log(`${req.method}${req.url}`);
6 | next();
7 | }
8 |
9 | export default checkRoutes;
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/student/src/app/register/page.tsx:
--------------------------------------------------------------------------------
1 | import { Role } from "@stba/types/client";
2 | import RegisterPage from "@stba/ui/Pages/Register"
3 |
4 | const Register = () => {
5 | return <>
6 |
7 | >
8 | };
9 |
10 | export default Register
--------------------------------------------------------------------------------
/06.blog-web/apps/server/src/middleware/checkRoutes.ts:
--------------------------------------------------------------------------------
1 | import { NextFunction, Request, Response } from "express";
2 |
3 | //check the route on server
4 | const checkRoutes = (req: Request, res: Response, next: NextFunction) => {
5 | console.log(`${req.method}${req.url}`);
6 | next();
7 | }
8 |
9 | export default checkRoutes;
--------------------------------------------------------------------------------
/06.blog-web/apps/web/src/main.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import ReactDOM from 'react-dom/client'
3 | import App from './App.tsx'
4 | import './index.css'
5 |
6 | ReactDOM.createRoot(document.getElementById('root')!).render(
7 |
8 |
9 | ,
10 | )
11 |
--------------------------------------------------------------------------------
/04.chat-app/apps/server/src/routes/auth.route.ts:
--------------------------------------------------------------------------------
1 | import { Router } from "express";
2 | import { logout, signin, signup } from "../controller/authController";
3 |
4 | const router = Router();
5 |
6 | router.post("/signup", signup);
7 | router.post("/signin", signin);
8 | router.post("/logout", logout);
9 |
10 | export default router;
11 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/server/src/middleware/checkRoutes.ts:
--------------------------------------------------------------------------------
1 | import { NextFunction, Request, Response } from "express";
2 |
3 | //check the route on server
4 | const checkRoutes = (req: Request, res: Response, next: NextFunction) => {
5 | console.log(`${req.method}${req.url}`);
6 | next();
7 | }
8 |
9 | export default checkRoutes;
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/admin/src/app/page.tsx:
--------------------------------------------------------------------------------
1 | import Footer from "@stba/ui/Footer";
2 | import Hero from "@stba/ui/Hero";
3 |
4 | const Home = () => {
5 | return (
6 |
7 |
8 |
9 |
10 | );
11 | }
12 |
13 | export default Home;
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/admin/src/app/dashboard/student/denied/page.tsx:
--------------------------------------------------------------------------------
1 | import { Status } from "@stba/types/client";
2 | import StudentStatusPage from "@stba/ui/Pages/StudentStatusPage";
3 |
4 |
5 | const Page = () => {
6 | return <>
7 |
8 | >
9 | };
10 |
11 | export default Page;
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/student/src/app/page.tsx:
--------------------------------------------------------------------------------
1 | import Footer from "@stba/ui/Footer";
2 | import Hero from "@stba/ui/Hero";
3 |
4 | const Home = () => {
5 | return (
6 |
7 |
8 |
9 |
10 | );
11 | }
12 |
13 | export default Home;
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/teacher/src/app/page.tsx:
--------------------------------------------------------------------------------
1 | import Footer from "@stba/ui/Footer";
2 | import Hero from "@stba/ui/Hero";
3 |
4 | const Home = () => {
5 | return (
6 |
7 |
8 |
9 |
10 | );
11 | }
12 |
13 | export default Home;
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/admin/src/app/dashboard/student/approved/page.tsx:
--------------------------------------------------------------------------------
1 | import { Status } from "@stba/types/client";
2 | import StudentStatusPage from "@stba/ui/Pages/StudentStatusPage";
3 |
4 |
5 | const Page = () => {
6 | return <>
7 |
8 | >
9 | };
10 |
11 | export default Page;
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/admin/src/app/dashboard/student/pending/page.tsx:
--------------------------------------------------------------------------------
1 | import { Status } from "@stba/types/client";
2 | import StudentStatusPage from "@stba/ui/Pages/StudentStatusPage";
3 |
4 |
5 | const Page = () => {
6 | return <>
7 |
8 | >
9 | };
10 |
11 | export default Page;
--------------------------------------------------------------------------------
/06.blog-web/apps/web/src/components/Quote.tsx:
--------------------------------------------------------------------------------
1 | export const Quote = () => {
2 | return (
3 |
8 | );
9 | };
10 |
--------------------------------------------------------------------------------
/07.portfolio/src/app/page.tsx:
--------------------------------------------------------------------------------
1 | import BootScreen from "@/screens/BootScreen";
2 | import Landing from "@/screens/Landing";
3 | import React from "react";
4 |
5 | const Home = () => {
6 | return (
7 | <>
8 |
9 |
10 |
11 |
12 | >
13 | );
14 | };
15 |
16 | export default Home;
17 |
--------------------------------------------------------------------------------
/04.chat-app/apps/server/src/routes/search.route.ts:
--------------------------------------------------------------------------------
1 | import express from "express";
2 | import { searchUser } from "../controller/searchController";
3 | import authenticate from "../middleware/authenticate";
4 |
5 | const router = express.Router();
6 |
7 | //search for the user
8 | router.get("/user", authenticate, searchUser);
9 |
10 | export default router;
11 |
--------------------------------------------------------------------------------
/04.chat-app/packages/typescript-config/nextjs.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/tsconfig",
3 | "extends": "./base.json",
4 | "compilerOptions": {
5 | "plugins": [{ "name": "next" }],
6 | "module": "ESNext",
7 | "moduleResolution": "Bundler",
8 | "allowJs": true,
9 | "jsx": "preserve",
10 | "noEmit": true
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/teacher/src/app/update/password/[teacherId]/page.tsx:
--------------------------------------------------------------------------------
1 | import { Role } from "@stba/types/client";
2 | import UpdatePasswordPage from "@stba/ui/Pages/UpdatePassword";
3 |
4 | const UpdatePassword = () => {
5 | return <>
6 |
7 | >
8 | };
9 |
10 | export default UpdatePassword;
--------------------------------------------------------------------------------
/06.blog-web/apps/server/src/utils/cookieOptions.ts:
--------------------------------------------------------------------------------
1 | import { CookieOptions } from "express";
2 |
3 | export const COOKIE_OPTIONS: CookieOptions = {
4 | httpOnly: true,
5 | // eslint-disable-next-line turbo/no-undeclared-env-vars
6 | secure: process.env.NODE_ENV === "production",
7 | sameSite: "strict",
8 | maxAge: 7 * 24 * 60 * 60 * 1000, // 7 days
9 | };
10 |
--------------------------------------------------------------------------------
/06.blog-web/packages/typescript-config/nextjs.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/tsconfig",
3 | "extends": "./base.json",
4 | "compilerOptions": {
5 | "plugins": [{ "name": "next" }],
6 | "module": "ESNext",
7 | "moduleResolution": "Bundler",
8 | "allowJs": true,
9 | "jsx": "preserve",
10 | "noEmit": true
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/tic-tac-toe/src/types/index.ts:
--------------------------------------------------------------------------------
1 | export interface BoardProps {
2 | roomId: string;
3 | playerName: string;
4 | }
5 |
6 | export interface CellProps {
7 | value: string;
8 | onClick: () => void;
9 | }
10 |
11 | export interface ResultProps {
12 | result: string | null;
13 | players: Record;
14 | currentTurn: string
15 | }
16 |
--------------------------------------------------------------------------------
/03.tic-tac-toe/packages/typescript-config/nextjs.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/tsconfig",
3 | "extends": "./base.json",
4 | "compilerOptions": {
5 | "plugins": [{ "name": "next" }],
6 | "module": "ESNext",
7 | "moduleResolution": "Bundler",
8 | "allowJs": true,
9 | "jsx": "preserve",
10 | "noEmit": true
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/02.Calculator/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/01.WeatherApp/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
26 | .env
--------------------------------------------------------------------------------
/04.chat-app/packages/utils/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@chatApp/utils",
3 | "version": "1.0.0",
4 | "main": "index.js",
5 | "license": "MIT",
6 | "exports": {
7 | ".": "./src/index.ts"
8 | },
9 | "devDependencies": {
10 | "@chatApp/eslint-config": "*",
11 | "@chatApp/typescript-config": "*",
12 | "@types/react": "19.0.8",
13 | "typescript": "5.7.3"
14 | }
15 | }
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/teacher/src/app/dashboard/appointment/approved/page.tsx:
--------------------------------------------------------------------------------
1 | import { AppointmentStatus } from "@stba/types/client";
2 | import TeacherAppointmentPage from "@stba/ui/Pages/TeacherAppointmentPage";
3 |
4 | const Page = () => {
5 | return <>
6 |
7 | >
8 | };
9 |
10 | export default Page;
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/teacher/src/app/dashboard/appointment/pending/page.tsx:
--------------------------------------------------------------------------------
1 | import { AppointmentStatus } from "@stba/types/client";
2 | import TeacherAppointmentPage from "@stba/ui/Pages/TeacherAppointmentPage";
3 |
4 | const Page = () => {
5 | return <>
6 |
7 | >
8 | };
9 |
10 | export default Page;
--------------------------------------------------------------------------------
/06.blog-web/apps/web/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/server/src/utils/cookieOptions.ts:
--------------------------------------------------------------------------------
1 | import { CookieOptions } from "express";
2 |
3 | export const COOKIE_OPTIONS: CookieOptions = {
4 | httpOnly: true,
5 | // eslint-disable-next-line turbo/no-undeclared-env-vars
6 | secure: process.env.NODE_ENV === "production",
7 | sameSite: "strict",
8 | maxAge: 7 * 24 * 60 * 60 * 1000, // 7 days
9 | };
10 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/teacher/src/app/dashboard/appointment/cancelled/page.tsx:
--------------------------------------------------------------------------------
1 | import { AppointmentStatus } from "@stba/types/client";
2 | import TeacherAppointmentPage from "@stba/ui/Pages/TeacherAppointmentPage";
3 |
4 | const Page = () => {
5 | return <>
6 |
7 | >
8 | };
9 |
10 | export default Page;
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/typescript-config/nextjs.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/tsconfig",
3 | "extends": "./base.json",
4 | "compilerOptions": {
5 | "plugins": [{ "name": "next" }],
6 | "module": "ESNext",
7 | "moduleResolution": "Bundler",
8 | "allowJs": true,
9 | "jsx": "preserve",
10 | "noEmit": true
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/06.blog-web/apps/server/src/index.ts:
--------------------------------------------------------------------------------
1 | import app from "./app";
2 | import * as dotenv from "dotenv";
3 | import startServer from "./controller/start.controller";
4 |
5 | dotenv.config();
6 |
7 | // eslint-disable-next-line turbo/no-undeclared-env-vars
8 | const port = process.env.PORT || 8080; // Server port
9 |
10 | // Start the server
11 | app.listen(port, async () => startServer(Number(port)));
12 |
--------------------------------------------------------------------------------
/06.blog-web/apps/web/src/components/Avatar.tsx:
--------------------------------------------------------------------------------
1 | const Avatar = ({ username }: { username: string }) => {
2 | return (
3 |
4 | {username[0]}
5 |
6 | );
7 | };
8 |
9 | export default Avatar;
10 |
--------------------------------------------------------------------------------
/01.WeatherApp/src/types/index.ts:
--------------------------------------------------------------------------------
1 | export interface WeatherData {
2 | name: string;
3 | main: {
4 | temp: number;
5 | feels_like: number;
6 | humidity: number;
7 | };
8 | weather: {
9 | description: string;
10 | main: string;
11 | }[];
12 | wind: {
13 | speed: number;
14 | };
15 | sys: {
16 | sunrise: number;
17 | sunset: number;
18 | };
19 | }
20 |
--------------------------------------------------------------------------------
/04.chat-app/apps/server/src/utils/cookieOptions.ts:
--------------------------------------------------------------------------------
1 | import { CookieOptions } from "express";
2 |
3 | export const COOKIE_OPTIONS: CookieOptions = {
4 | httpOnly: true,
5 | // eslint-disable-next-line turbo/no-undeclared-env-vars
6 | secure: process.env.NODE_ENV === "production",
7 | sameSite: "strict", // ✅ TypeScript now understands it's a valid value
8 | maxAge: 7 * 24 * 60 * 60 * 1000, // 7 days
9 | };
10 |
--------------------------------------------------------------------------------
/06.blog-web/apps/server/src/routes/auth.route.ts:
--------------------------------------------------------------------------------
1 | import { Router } from "express";
2 | import { logout, signin, signup } from "../controller/auth.controller";
3 |
4 | const router = Router();
5 |
6 | //create a user account
7 | router.post("/signup", signup);
8 |
9 | //login to a user account
10 | router.post("/signin", signin);
11 |
12 | //user log out
13 | router.post("/logout", logout);
14 |
15 | export default router;
--------------------------------------------------------------------------------
/04.chat-app/apps/server/src/index.ts:
--------------------------------------------------------------------------------
1 | import { server } from "./app";
2 | import * as dotenv from "dotenv";
3 | import startServer from "./controller/startServer";
4 |
5 | dotenv.config();
6 |
7 | // eslint-disable-next-line turbo/no-undeclared-env-vars
8 | const port = process.env.PORT || 8080; // Server port
9 |
10 | // Start the server (Express & WebSocket)
11 | server.listen(port, async () => startServer(Number(port)));
12 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/ui/src/buttons/button.tsx:
--------------------------------------------------------------------------------
1 | "use client";
2 |
3 | export const Button = ({ appName, className }: { appName: string, className?: string }) => {
4 | return (
5 | alert(`Hello from your ${appName} app!`)}
8 | >
9 | click
10 |
11 | );
12 | };
--------------------------------------------------------------------------------
/04.chat-app/apps/chatapp/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@chatApp/typescript-config/nextjs.json",
3 | "compilerOptions": {
4 | "plugins": [
5 | {
6 | "name": "next"
7 | }
8 | ]
9 | },
10 | "include": [
11 | "**/*.ts",
12 | "**/*.tsx",
13 | "next-env.d.ts",
14 | "next.config.js",
15 | ".next/types/**/*.ts"
16 | ],
17 | "exclude": [
18 | "node_modules"
19 | ]
20 | }
21 |
--------------------------------------------------------------------------------
/01.WeatherApp/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Weather App
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/02.Calculator/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Calculator
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/02.Calculator/src/components/Display.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { DisplayProps } from "../types";
3 |
4 | const Display: React.FC = ({ value }) => (
5 |
7 | {value}
8 |
9 | );
10 |
11 | export default Display;
12 |
--------------------------------------------------------------------------------
/04.chat-app/apps/server/src/controller/dbConnect.ts:
--------------------------------------------------------------------------------
1 | import prisma from "@chatApp/db/prisma";
2 |
3 | const dbConnect = async () => {
4 | try {
5 | await prisma.$connect();
6 | console.log("✅ Database connected successfully!");
7 | } catch (err) {
8 | console.error("❌ Error connecting to the database:", err);
9 | process.exit(1); // Exit if DB connection fails
10 | }
11 | };
12 |
13 | export default dbConnect;
14 |
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/tic-tac-toe/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@tic-tac-toe/typescript-config/nextjs.json",
3 | "compilerOptions": {
4 | "plugins": [
5 | {
6 | "name": "next"
7 | }
8 | ]
9 | },
10 | "include": [
11 | "**/*.ts",
12 | "**/*.tsx",
13 | "next-env.d.ts",
14 | "next.config.js",
15 | ".next/types/**/*.ts"
16 | ],
17 | "exclude": [
18 | "node_modules"
19 | ]
20 | }
21 |
--------------------------------------------------------------------------------
/04.chat-app/apps/chatapp/src/app/chat/layout.tsx:
--------------------------------------------------------------------------------
1 | import { ReactNode } from "react";
2 | import Sidebar from "../../components/sidebar";
3 |
4 | export default function ChatLayout({ children }: { children: ReactNode }) {
5 | return (
6 |
7 |
8 |
9 | {children}
10 |
11 |
12 | );
13 | }
14 |
--------------------------------------------------------------------------------
/06.blog-web/apps/server/src/controller/db.controller.ts:
--------------------------------------------------------------------------------
1 | import prisma from "@blog-web/db/prisma";
2 |
3 | const dbConnect = async () => {
4 | try {
5 | await prisma.$connect();
6 | console.log("✅ Database connected successfully!");
7 | } catch (err) {
8 | console.error("❌ Error connecting to the database:", err);
9 | process.exit(1); // Exit if DB connection fails
10 | }
11 | };
12 |
13 | export default dbConnect;
14 |
--------------------------------------------------------------------------------
/06.blog-web/apps/web/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Blog Web
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/admin/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@stba/typescript-config/nextjs.json",
3 | "compilerOptions": {
4 | "plugins": [
5 | {
6 | "name": "next"
7 | }
8 | ]
9 | },
10 | "include": [
11 | "**/*.ts",
12 | "**/*.tsx",
13 | "next-env.d.ts",
14 | "next.config.js",
15 | ".next/types/**/*.ts"
16 | ],
17 | "exclude": [
18 | "node_modules"
19 | ]
20 | }
21 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/server/src/index.ts:
--------------------------------------------------------------------------------
1 | import app from "./app";
2 | import * as dotenv from "dotenv";
3 | import startServer from "./controller/start.controller";
4 |
5 | dotenv.config();
6 |
7 | // eslint-disable-next-line turbo/no-undeclared-env-vars
8 | const port = process.env.PORT || 8080; // Server port
9 |
10 | // Start the server (Express & WebSocket)
11 | app.listen(port, async () => startServer(Number(port)));
12 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/student/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@stba/typescript-config/nextjs.json",
3 | "compilerOptions": {
4 | "plugins": [
5 | {
6 | "name": "next"
7 | }
8 | ]
9 | },
10 | "include": [
11 | "**/*.ts",
12 | "**/*.tsx",
13 | "next-env.d.ts",
14 | "next.config.js",
15 | ".next/types/**/*.ts"
16 | ],
17 | "exclude": [
18 | "node_modules"
19 | ]
20 | }
21 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/teacher/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@stba/typescript-config/nextjs.json",
3 | "compilerOptions": {
4 | "plugins": [
5 | {
6 | "name": "next"
7 | }
8 | ]
9 | },
10 | "include": [
11 | "**/*.ts",
12 | "**/*.tsx",
13 | "next-env.d.ts",
14 | "next.config.js",
15 | ".next/types/**/*.ts"
16 | ],
17 | "exclude": [
18 | "node_modules"
19 | ]
20 | }
21 |
--------------------------------------------------------------------------------
/04.chat-app/.eslintrc.js:
--------------------------------------------------------------------------------
1 | // This configuration only applies to the package manager root.
2 | /** @type {import("eslint").Linter.Config} */
3 |
4 | module.exports = {
5 | ignorePatterns: ["apps/**", "packages/**"],
6 | extends: ["@chatApp/eslint-config/library.js"],
7 | parser: "@typescript-eslint/parser",
8 | parserOptions: {
9 | project: true,
10 | },
11 | rules: {
12 | "no-unused-vars": "off",
13 | "no-redeclare": "off",
14 | }
15 | };
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/server/src/controller/db.controller.ts:
--------------------------------------------------------------------------------
1 | import prisma from "@stba/db/prisma";
2 |
3 | const dbConnect = async () => {
4 | try {
5 | await prisma.$connect();
6 | console.log("✅ Database connected successfully!");
7 | } catch (err) {
8 | console.error("❌ Error connecting to the database:", err);
9 | process.exit(1); // Exit if DB connection fails
10 | }
11 | };
12 |
13 | export default dbConnect;
14 |
--------------------------------------------------------------------------------
/06.blog-web/.eslintrc.js:
--------------------------------------------------------------------------------
1 | // This configuration only applies to the package manager root.
2 | /** @type {import("eslint").Linter.Config} */
3 |
4 | module.exports = {
5 | ignorePatterns: ["apps/**", "packages/**"],
6 | extends: ["@chatApp/eslint-config/library.js"],
7 | parser: "@typescript-eslint/parser",
8 | parserOptions: {
9 | project: true,
10 | },
11 | rules: {
12 | "no-unused-vars": "off",
13 | "no-redeclare": "off",
14 | }
15 | };
--------------------------------------------------------------------------------
/06.blog-web/apps/server/src/routes/comment.route.ts:
--------------------------------------------------------------------------------
1 | import { Router } from "express";
2 | import authenticate from "../middleware/authenticate";
3 | import { createComment, getComments } from "../controller/comment.controller";
4 |
5 | const router = Router();
6 |
7 | //create comment
8 | router.post("/:blogId", authenticate, createComment);
9 |
10 | //get all comments for blogId
11 | router.get("/:blogId", authenticate, getComments)
12 |
13 | export default router;
--------------------------------------------------------------------------------
/06.blog-web/apps/server/src/controller/start.controller.ts:
--------------------------------------------------------------------------------
1 | import dbConnect from "./db.controller";
2 |
3 | const startServer = async (port: number) => {
4 | try {
5 | console.log("🚀 Starting server...");
6 | await dbConnect(); // Connect to database
7 | console.log(`✅ Server is running on http://localhost:${port} ⚙️`);
8 | } catch (err) {
9 | console.log("❌ Error while starting server: " + err);
10 | }
11 | };
12 |
13 | export default startServer;
14 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/.eslintrc.js:
--------------------------------------------------------------------------------
1 | // This configuration only applies to the package manager root.
2 | /** @type {import("eslint").Linter.Config} */
3 |
4 | module.exports = {
5 | ignorePatterns: ["apps/**", "packages/**"],
6 | extends: ["@chatApp/eslint-config/library.js"],
7 | parser: "@typescript-eslint/parser",
8 | parserOptions: {
9 | project: true,
10 | },
11 | rules: {
12 | "no-unused-vars": "off",
13 | "no-redeclare": "off",
14 | }
15 | };
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/types/src/client/enum.ts:
--------------------------------------------------------------------------------
1 | //roles
2 | export enum Role {
3 | STUDENT = "STUDENT",
4 | TEACHER = "TEACHER",
5 | ADMIN = "ADMIN",
6 | };
7 |
8 | //registration status
9 | export enum Status {
10 | APPROVED = "APPROVED",
11 | PENDING = "PENDING",
12 | DENIED = "DENIED"
13 | };
14 |
15 | //appointment status
16 | export enum AppointmentStatus {
17 | APPROVED = "APPROVED",
18 | PENDING = "PENDING",
19 | CANCELLED = "CANCELLED"
20 | };
--------------------------------------------------------------------------------
/06.blog-web/apps/web/src/pages/Signin.tsx:
--------------------------------------------------------------------------------
1 | import { Quote } from "../components/Quote";
2 | import { Auth } from "../components/signin/Auth";
3 |
4 | const Signin = () => {
5 | return (
6 |
16 | );
17 | };
18 |
19 | export default Signin;
20 |
--------------------------------------------------------------------------------
/06.blog-web/apps/web/src/pages/Signup.tsx:
--------------------------------------------------------------------------------
1 | import { Auth } from "../components/signup/Auth";
2 | import { Quote } from "../components/Quote";
3 |
4 | const Signup = () => {
5 | return (
6 |
16 | );
17 | };
18 |
19 | export default Signup;
20 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/admin/src/app/dashboard/layout.tsx:
--------------------------------------------------------------------------------
1 | import Sidebar from '@stba/ui/Sidebar';
2 | import { Role } from '@stba/types/client';
3 |
4 | export default function DashboardLayout({
5 | children,
6 | }: {
7 | children: React.ReactNode;
8 | }) {
9 | return (
10 |
11 |
12 | {children}
13 |
14 | );
15 | }
16 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/server/src/controller/start.controller.ts:
--------------------------------------------------------------------------------
1 | import dbConnect from "./db.controller";
2 |
3 | const startServer = async (port: number) => {
4 | try {
5 | console.log("🚀 Starting server...");
6 | await dbConnect(); // Connect to database
7 | console.log(`✅ Server is running on http://localhost:${port} ⚙️`);
8 | } catch (err) {
9 | console.log("❌ Error while starting server: " + err);
10 | }
11 | };
12 |
13 | export default startServer;
14 |
--------------------------------------------------------------------------------
/02.Calculator/src/components/Button.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { ButtonProps } from "../types";
3 |
4 | const Button: React.FC = ({ value, onClick }) => (
5 | onClick(value)}
7 | className="p-3 rounded-lg text-lg font-medium transition-colors duration-200 bg-gray-300 hover:bg-gray-400 text-gray-900 dark:bg-gray-700 dark:hover:bg-gray-600 dark:text-gray-100"
8 | >
9 | {value}
10 |
11 | );
12 |
13 | export default Button;
14 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/student/src/app/dashboard/layout.tsx:
--------------------------------------------------------------------------------
1 | import Sidebar from '@stba/ui/Sidebar';
2 | import { Role } from '@stba/types/client';
3 |
4 | export default function DashboardLayout({
5 | children,
6 | }: {
7 | children: React.ReactNode;
8 | }) {
9 | return (
10 |
11 |
12 | {children}
13 |
14 | );
15 | }
16 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/teacher/src/app/dashboard/layout.tsx:
--------------------------------------------------------------------------------
1 | import Sidebar from '@stba/ui/Sidebar';
2 | import { Role } from '@stba/types/client';
3 |
4 | export default function DashboardLayout({
5 | children,
6 | }: {
7 | children: React.ReactNode;
8 | }) {
9 | return (
10 |
11 |
12 | {children}
13 |
14 | );
15 | }
16 |
--------------------------------------------------------------------------------
/04.chat-app/packages/db/index.ts:
--------------------------------------------------------------------------------
1 | import { PrismaClient } from "@prisma/client";
2 |
3 | const prismaClientSingleton = () => {
4 | return new PrismaClient();
5 | };
6 |
7 | declare global {
8 | var prismaGlobal: undefined | ReturnType;
9 | }
10 |
11 | const prisma: ReturnType = globalThis.prismaGlobal ?? prismaClientSingleton();
12 |
13 | export default prisma;
14 |
15 | if (process.env.NODE_ENV !== "production") globalThis.prismaGlobal = prisma;
16 |
--------------------------------------------------------------------------------
/07.portfolio/public/svg/front-html.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/03.tic-tac-toe/turbo.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://turbo.build/schema.json",
3 | "ui": "tui",
4 | "tasks": {
5 | "build": {
6 | "dependsOn": ["^build"],
7 | "inputs": ["$TURBO_DEFAULT$", ".env*"],
8 | "outputs": [".next/**", "!.next/cache/**"]
9 | },
10 | "lint": {
11 | "dependsOn": ["^lint"]
12 | },
13 | "check-types": {
14 | "dependsOn": ["^check-types"]
15 | },
16 | "dev": {
17 | "cache": false,
18 | "persistent": true
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/04.chat-app/turbo.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://turbo.build/schema.json",
3 | "ui": "tui",
4 | "tasks": {
5 | "build": {
6 | "dependsOn": ["^build"],
7 | "inputs": ["$TURBO_DEFAULT$", ".env*"],
8 | "outputs": [".next/**", "!.next/cache/**"]
9 | },
10 | "lint": {
11 | "dependsOn": ["^lint"]
12 | },
13 | "check-types": {
14 | "dependsOn": ["^check-types"]
15 | },
16 | "dev": {
17 | "cache": false,
18 | "persistent": true
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/06.blog-web/turbo.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://turbo.build/schema.json",
3 | "ui": "tui",
4 | "tasks": {
5 | "build": {
6 | "dependsOn": ["^build"],
7 | "inputs": ["$TURBO_DEFAULT$", ".env*"],
8 | "outputs": [".next/**", "!.next/cache/**"]
9 | },
10 | "lint": {
11 | "dependsOn": ["^lint"]
12 | },
13 | "check-types": {
14 | "dependsOn": ["^check-types"]
15 | },
16 | "dev": {
17 | "cache": false,
18 | "persistent": true
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/07.portfolio/public/svg/front-css.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/06.blog-web/packages/db/index.ts:
--------------------------------------------------------------------------------
1 | import { PrismaClient } from "./prisma/generated/prisma/client";
2 |
3 | const prismaClientSingleton = () => {
4 | return new PrismaClient();
5 | };
6 |
7 | declare global {
8 | var prismaGlobal: undefined | ReturnType;
9 | }
10 |
11 | const prisma: ReturnType = globalThis.prismaGlobal ?? prismaClientSingleton();
12 |
13 | export default prisma;
14 |
15 | if (process.env.NODE_ENV !== "production") globalThis.prismaGlobal = prisma;
16 |
--------------------------------------------------------------------------------
/07.portfolio/public/svg/front-tailwind.svg:
--------------------------------------------------------------------------------
1 |
2 | file_type_tailwind
--------------------------------------------------------------------------------
/07.portfolio/src/types/projectType.ts:
--------------------------------------------------------------------------------
1 | export type modal = {
2 | active: boolean;
3 | index: number;
4 | };
5 |
6 | export interface ProjectProps {
7 | index: number;
8 | title: string;
9 | description: string;
10 | link: string;
11 | setModal: ({}: modal) => void;
12 | }
13 |
14 | export interface modalProps {
15 | modal: modal;
16 | projects: project[];
17 | }
18 |
19 | export interface project {
20 | title: string;
21 | description: string;
22 | src: string;
23 | link: string;
24 | color: string;
25 | }
26 |
--------------------------------------------------------------------------------
/04.chat-app/apps/server/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 | .yarn/install-state.gz
8 |
9 | # testing
10 | /coverage
11 |
12 | # production
13 | /build
14 | /dist
15 |
16 | # misc
17 | .DS_Store
18 | *.pem
19 |
20 | # debug
21 | npm-debug.log*
22 | yarn-debug.log*
23 | yarn-error.log*
24 |
25 | # env files (can opt-in for commiting if needed)
26 | .env
27 |
28 | # typescript
29 | *.tsbuildinfo
30 | next-env.d.ts
31 |
--------------------------------------------------------------------------------
/06.blog-web/apps/server/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 | .yarn/install-state.gz
8 |
9 | # testing
10 | /coverage
11 |
12 | # production
13 | /build
14 | /dist
15 |
16 | # misc
17 | .DS_Store
18 | *.pem
19 |
20 | # debug
21 | npm-debug.log*
22 | yarn-debug.log*
23 | yarn-error.log*
24 |
25 | # env files (can opt-in for commiting if needed)
26 | .env
27 |
28 | # typescript
29 | *.tsbuildinfo
30 | next-env.d.ts
31 |
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/server/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 | .yarn/install-state.gz
8 |
9 | # testing
10 | /coverage
11 |
12 | # production
13 | /build
14 | /dist
15 |
16 | # misc
17 | .DS_Store
18 | *.pem
19 |
20 | # debug
21 | npm-debug.log*
22 | yarn-debug.log*
23 | yarn-error.log*
24 |
25 | # env files (can opt-in for commiting if needed)
26 | .env
27 |
28 | # typescript
29 | *.tsbuildinfo
30 | next-env.d.ts
31 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/utils/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@stba/utils",
3 | "version": "1.0.0",
4 | "main": "index.js",
5 | "license": "MIT",
6 | "scripts": {
7 | "lint": "eslint . --max-warnings 0",
8 | "check-types": "tsc --noEmit"
9 | },
10 | "exports": {
11 | "./*": "./src/*.ts"
12 | },
13 | "dependencies": {
14 | "axios": "^1.8.4"
15 | },
16 | "devDependencies": {
17 | "@stba/eslint-config": "*",
18 | "@stba/typescript-config": "*",
19 | "typescript": "5.7.3"
20 | }
21 | }
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/turbo.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://turbo.build/schema.json",
3 | "ui": "tui",
4 | "tasks": {
5 | "build": {
6 | "dependsOn": ["^build"],
7 | "inputs": ["$TURBO_DEFAULT$", ".env*"],
8 | "outputs": [".next/**", "!.next/cache/**"]
9 | },
10 | "lint": {
11 | "dependsOn": ["^lint"]
12 | },
13 | "check-types": {
14 | "dependsOn": ["^check-types"]
15 | },
16 | "dev": {
17 | "cache": false,
18 | "persistent": true
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/db/index.ts:
--------------------------------------------------------------------------------
1 | import { PrismaClient } from "./prisma/generated/prisma/client";
2 |
3 | const prismaClientSingleton = () => {
4 | return new PrismaClient();
5 | };
6 |
7 | declare global {
8 | var prismaGlobal: undefined | ReturnType;
9 | }
10 |
11 | const prisma: ReturnType = globalThis.prismaGlobal ?? prismaClientSingleton();
12 |
13 | export default prisma;
14 |
15 | if (process.env.NODE_ENV !== "production") globalThis.prismaGlobal = prisma;
16 |
--------------------------------------------------------------------------------
/06.blog-web/packages/types/src/server/validators/comment.validator.ts:
--------------------------------------------------------------------------------
1 | import { z } from "zod";
2 |
3 | //create comments
4 | export const CreateCommentSchema = z.object({
5 | userId: z.string().uuid("Invalid userId").nonempty("can't leave empty"),
6 | blogId: z.string().uuid("Invalid blogId").nonempty("can't leave empty"),
7 | comment: z.string().nonempty("Comment can't be empty"),
8 | });
9 |
10 | //create comments
11 | export const GetCommentsSchema = z.object({
12 | blogId: z.string().uuid("Invalid blogId").nonempty("can't leave empty"),
13 | });
14 |
--------------------------------------------------------------------------------
/01.WeatherApp/src/UI/DotsLoading.tsx:
--------------------------------------------------------------------------------
1 | // DotsLoading.js
2 | import React from "react";
3 | import "./DotsLoading.css"; // Import the CSS file for keyframes
4 |
5 | const DotsLoading = () => {
6 | return (
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | );
15 | };
16 |
17 | export default DotsLoading;
18 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/server/src/routes/auth.route.ts:
--------------------------------------------------------------------------------
1 | import { Router } from "express";
2 | import { login, logout, registerStudent, setTeacherPassword } from "../controller/auth.controller";
3 |
4 | const router = Router();
5 |
6 | //student register
7 | router.post("/student/register", registerStudent);
8 |
9 | //teacher set password
10 | router.post('/teacher/password', setTeacherPassword);
11 |
12 | //user login
13 | router.post("/login", login);
14 |
15 | //user log out
16 | router.post("/logout", logout);
17 |
18 | export default router;
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/types/src/client/auth.validator.ts:
--------------------------------------------------------------------------------
1 | import z from "zod";
2 | import { AddTeacherSchema, SetPasswordSchema, StudentRegisterSchema, UpdateTeacherSchema, UserLoginSchema } from "../server";
3 |
4 | export type UserLoginType = z.infer;
5 | export type StudentRegisterType = z.infer;
6 | export type SetPasswordType = z.infer;
7 | export type AddTeacherType = z.infer;
8 | export type UpdateTeacherType = z.infer;
--------------------------------------------------------------------------------
/07.portfolio/src/screens/Landing.tsx:
--------------------------------------------------------------------------------
1 | import AppBar from "@/components/ui/AppBar";
2 | import Dock from "@/components/ui/Dock";
3 | import Hero from "@/components/ui/Hero";
4 | import Projects from "@/components/ui/Projects";
5 | import Skills from "@/components/ui/Skills";
6 | import React from "react";
7 |
8 | const Landing = () => {
9 | return (
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | );
18 | };
19 |
20 | export default Landing;
21 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/server/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 | .yarn/install-state.gz
8 |
9 | # testing
10 | /coverage
11 |
12 | # production
13 | /build
14 | /dist
15 |
16 | # misc
17 | .DS_Store
18 | *.pem
19 |
20 | # debug
21 | npm-debug.log*
22 | yarn-debug.log*
23 | yarn-error.log*
24 |
25 | # env files (can opt-in for commiting if needed)
26 | .env
27 |
28 | # typescript
29 | *.tsbuildinfo
30 | next-env.d.ts
31 |
--------------------------------------------------------------------------------
/07.portfolio/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 | .yarn/install-state.gz
8 |
9 | # testing
10 | /coverage
11 |
12 | # next.js
13 | /.next/
14 | /out/
15 |
16 | # production
17 | /build
18 |
19 | # misc
20 | .DS_Store
21 | *.pem
22 |
23 | # debug
24 | npm-debug.log*
25 | yarn-debug.log*
26 | yarn-error.log*
27 |
28 | # local env files
29 | .env*.local
30 |
31 | # vercel
32 | .vercel
33 |
34 | # typescript
35 | *.tsbuildinfo
36 | next-env.d.ts
37 |
38 |
--------------------------------------------------------------------------------
/01.WeatherApp/src/store/index.ts:
--------------------------------------------------------------------------------
1 | export const weatherIconMap: { [key: string]: string } = {
2 | Thunderstorm: "ri-thunderstorms-line",
3 | Drizzle: "ri-drizzle-line",
4 | Rain: "ri-rainy-line",
5 | Snow: "ri-snowy-line",
6 | Mist: "ri-foggy-line",
7 | Smoke: "ri-smoke-line",
8 | Haze: "ri-haze-line",
9 | Dust: "ri-dust-line",
10 | Fog: "ri-foggy-line",
11 | Sand: "ri-sandstorm-line",
12 | Ash: "ri-volcano-line",
13 | Squall: "ri-windy-line",
14 | Tornado: "ri-tornado-line",
15 | Clear: "ri-sun-line",
16 | Clouds: "ri-cloudy-line",
17 | };
18 |
--------------------------------------------------------------------------------
/04.chat-app/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # Dependencies
4 | node_modules
5 | .pnp
6 | .pnp.js
7 |
8 | # Local env files
9 | .env
10 | .env.local
11 | .env.development.local
12 | .env.test.local
13 | .env.production.local
14 |
15 | # Testing
16 | coverage
17 |
18 | # Turbo
19 | .turbo
20 |
21 | # Vercel
22 | .vercel
23 |
24 | # Build Outputs
25 | .next/
26 | out/
27 | build
28 | dist
29 |
30 |
31 | # Debug
32 | npm-debug.log*
33 | yarn-debug.log*
34 | yarn-error.log*
35 |
36 | # Misc
37 | .DS_Store
38 | *.pem
39 |
--------------------------------------------------------------------------------
/06.blog-web/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # Dependencies
4 | node_modules
5 | .pnp
6 | .pnp.js
7 |
8 | # Local env files
9 | .env
10 | .env.local
11 | .env.development.local
12 | .env.test.local
13 | .env.production.local
14 |
15 | # Testing
16 | coverage
17 |
18 | # Turbo
19 | .turbo
20 |
21 | # Vercel
22 | .vercel
23 |
24 | # Build Outputs
25 | .next/
26 | out/
27 | build
28 | dist
29 |
30 |
31 | # Debug
32 | npm-debug.log*
33 | yarn-debug.log*
34 | yarn-error.log*
35 |
36 | # Misc
37 | .DS_Store
38 | *.pem
39 |
--------------------------------------------------------------------------------
/03.tic-tac-toe/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # Dependencies
4 | node_modules
5 | .pnp
6 | .pnp.js
7 |
8 | # Local env files
9 | .env
10 | .env.local
11 | .env.development.local
12 | .env.test.local
13 | .env.production.local
14 |
15 | # Testing
16 | coverage
17 |
18 | # Turbo
19 | .turbo
20 |
21 | # Vercel
22 | .vercel
23 |
24 | # Build Outputs
25 | .next/
26 | out/
27 | build
28 | dist
29 |
30 |
31 | # Debug
32 | npm-debug.log*
33 | yarn-debug.log*
34 | yarn-error.log*
35 |
36 | # Misc
37 | .DS_Store
38 | *.pem
39 |
--------------------------------------------------------------------------------
/04.chat-app/apps/server/src/controller/startServer.ts:
--------------------------------------------------------------------------------
1 | import dbConnect from "./dbConnect";
2 | import { wss } from "../app";
3 | import socketHandler from "./socketHandler";
4 |
5 | const startServer = async (port: number) => {
6 | try {
7 | console.log("🚀 Starting server...");
8 | await dbConnect(); // Connect to database
9 | socketHandler(wss); // Initialize WebSocket events
10 | console.log(`✅ Server is running on http://localhost:${port} ⚙️`);
11 | } catch (err) {
12 | console.log("❌ Error while starting server: " + err);
13 | }
14 | };
15 |
16 | export default startServer;
17 |
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/tic-tac-toe/src/app/room/[id]/page.tsx:
--------------------------------------------------------------------------------
1 | "use client";
2 |
3 | import { useSearchParams } from "next/navigation";
4 | import Board from "../../../components/Board";
5 | import { use } from "react";
6 |
7 | export default function RoomPage({ params }: { params: Promise<{ id: string }> }) {
8 | const { id } = use(params); // Unwrap the params using use()
9 | const searchParams = useSearchParams();
10 | const playerName = searchParams.get("playerName") || "Anonymous"; // Get player name from URL
11 |
12 | return (
13 |
14 | );
15 | }
16 |
--------------------------------------------------------------------------------
/04.chat-app/apps/chatapp/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 | .yarn/install-state.gz
8 |
9 | # testing
10 | /coverage
11 |
12 | # next.js
13 | /.next/
14 | /out/
15 |
16 | # production
17 | /build
18 |
19 | # misc
20 | .DS_Store
21 | *.pem
22 |
23 | # debug
24 | npm-debug.log*
25 | yarn-debug.log*
26 | yarn-error.log*
27 |
28 | # env files (can opt-in for commiting if needed)
29 | .env*
30 |
31 | # vercel
32 | .vercel
33 |
34 | # typescript
35 | *.tsbuildinfo
36 | next-env.d.ts
37 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/db/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@stba/db",
3 | "version": "1.0.0",
4 | "main": "index.js",
5 | "license": "MIT",
6 | "exports": {
7 | "./prisma": "./index.ts"
8 | },
9 | "dependencies": {
10 | "@prisma/client": "^6.3.1",
11 | "@types/bcrypt": "^5.0.2",
12 | "bcrypt": "^5.1.1",
13 | "prisma": "^6.6.0"
14 | },
15 | "devDependencies": {
16 | "@stba/eslint-config": "*",
17 | "@stba/typescript-config": "*",
18 | "typescript": "5.7.3"
19 | },
20 | "prisma": {
21 | "seed": "ts-node prisma/seed.ts"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/03.tic-tac-toe/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "tic-tac-toe",
3 | "private": true,
4 | "scripts": {
5 | "build": "turbo run build",
6 | "dev": "turbo run dev",
7 | "lint": "turbo run lint",
8 | "format": "prettier --write \"**/*.{ts,tsx,md}\"",
9 | "check-types": "turbo run check-types"
10 | },
11 | "devDependencies": {
12 | "prettier": "^3.5.0",
13 | "turbo": "^2.4.4",
14 | "typescript": "5.7.3"
15 | },
16 | "engines": {
17 | "node": ">=18"
18 | },
19 | "packageManager": "yarn@1.22.22",
20 | "workspaces": [
21 | "apps/*",
22 | "packages/*"
23 | ]
24 | }
25 |
--------------------------------------------------------------------------------
/04.chat-app/packages/db/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@chatApp/db",
3 | "version": "1.0.0",
4 | "main": "index.js",
5 | "license": "MIT",
6 | "exports": {
7 | "./prisma": "./index.ts"
8 | },
9 | "dependencies": {
10 | "@prisma/client": "^6.3.1",
11 | "@types/bcrypt": "^5.0.2",
12 | "@chatApp/utils": "*",
13 | "bcrypt": "^5.1.1",
14 | "prisma": "^6.3.1"
15 | },
16 | "devDependencies": {
17 | "@chatApp/eslint-config": "*",
18 | "@chatApp/typescript-config": "*",
19 | "typescript": "5.7.3"
20 | },
21 | "prisma": {
22 | "seed": "ts-node prisma/seed.ts"
23 | }
24 | }
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/types/src/client/Props.ts:
--------------------------------------------------------------------------------
1 | import { AppointmentStatus, Role, Status } from "./enum";
2 |
3 | //navbar props
4 | export interface NavBarProps {
5 | appName: Role,
6 | className: string
7 | };
8 |
9 | export interface LoginProps {
10 | role: Role
11 | }
12 | export interface RegistrationProps {
13 | role: Role
14 | }
15 | export interface UpdatePasswordProps {
16 | role: Role,
17 | teacherId?: string
18 | }
19 | export interface StudentStatusProps {
20 | status: Status
21 | }
22 | export interface TeacherAppointmentProps {
23 | status: AppointmentStatus;
24 | }
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/tic-tac-toe/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 | .yarn/install-state.gz
8 |
9 | # testing
10 | /coverage
11 |
12 | # next.js
13 | /.next/
14 | /out/
15 |
16 | # production
17 | /build
18 |
19 | # misc
20 | .DS_Store
21 | *.pem
22 |
23 | # debug
24 | npm-debug.log*
25 | yarn-debug.log*
26 | yarn-error.log*
27 |
28 | # env files (can opt-in for commiting if needed)
29 | .env*
30 |
31 | # vercel
32 | .vercel
33 |
34 | # typescript
35 | *.tsbuildinfo
36 | next-env.d.ts
37 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # Dependencies
4 | node_modules
5 | .pnp
6 | .pnp.js
7 |
8 | # Local env files
9 | .env
10 | .env.local
11 | .env.development.local
12 | .env.test.local
13 | .env.production.local
14 |
15 | # Testing
16 | coverage
17 |
18 | # Turbo
19 | .turbo
20 |
21 | # Vercel
22 | .vercel
23 |
24 | # Build Outputs
25 | .next/
26 | out/
27 | build
28 | dist
29 |
30 |
31 | # Debug
32 | npm-debug.log*
33 | yarn-debug.log*
34 | yarn-error.log*
35 |
36 | # Misc
37 | .DS_Store
38 | *.pem
39 |
--------------------------------------------------------------------------------
/01.WeatherApp/README.md:
--------------------------------------------------------------------------------
1 | # Weather App ⛅
2 |
3 | 
4 |
5 | ## Features
6 |
7 | - Search Bar
8 | - weather, Temperature, Humidity, Wind Speed
9 | - Sunrise & Sunset time
10 |
11 | ## How to run app locally
12 |
13 | 1. install the dependency
14 |
15 | ```bash
16 | #go to the 01.WeatherApp
17 | cd 01.WeatherApp
18 |
19 | #install dependency
20 | yarn install
21 |
22 | ```
23 |
24 | 2. copy `.env.example` as `.env` and fill up the data
25 |
26 | ```bash
27 | #openweathermap API key
28 | VITE_API_KEY=
29 | ```
30 |
31 | 3. Now run the app
32 |
33 | ```bash
34 | yarn run dev
35 | ```
36 |
--------------------------------------------------------------------------------
/03.tic-tac-toe/packages/typescript-config/base.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/tsconfig",
3 | "compilerOptions": {
4 | "declaration": true,
5 | "declarationMap": true,
6 | "esModuleInterop": true,
7 | "incremental": false,
8 | "isolatedModules": true,
9 | "lib": ["es2022", "DOM", "DOM.Iterable"],
10 | "module": "NodeNext",
11 | "moduleDetection": "force",
12 | "moduleResolution": "NodeNext",
13 | "noUncheckedIndexedAccess": true,
14 | "resolveJsonModule": true,
15 | "skipLibCheck": true,
16 | "strict": true,
17 | "target": "ES2022"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/04.chat-app/packages/typescript-config/base.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/tsconfig",
3 | "compilerOptions": {
4 | "declaration": true,
5 | "declarationMap": true,
6 | "esModuleInterop": true,
7 | "incremental": false,
8 | "isolatedModules": true,
9 | "lib": ["es2022", "DOM", "DOM.Iterable"],
10 | "module": "NodeNext",
11 | "moduleDetection": "force",
12 | "moduleResolution": "NodeNext",
13 | "noUncheckedIndexedAccess": true,
14 | "resolveJsonModule": true,
15 | "skipLibCheck": true,
16 | "strict": true,
17 | "target": "ES2022"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/06.blog-web/packages/typescript-config/base.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/tsconfig",
3 | "compilerOptions": {
4 | "declaration": true,
5 | "declarationMap": true,
6 | "esModuleInterop": true,
7 | "incremental": false,
8 | "isolatedModules": true,
9 | "lib": ["es2022", "DOM", "DOM.Iterable"],
10 | "module": "NodeNext",
11 | "moduleDetection": "force",
12 | "moduleResolution": "NodeNext",
13 | "noUncheckedIndexedAccess": true,
14 | "resolveJsonModule": true,
15 | "skipLibCheck": true,
16 | "strict": true,
17 | "target": "ES2022"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/06.blog-web/packages/db/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@blog-web/db",
3 | "version": "1.0.0",
4 | "main": "index.js",
5 | "license": "MIT",
6 | "exports": {
7 | "./prisma": "./index.ts"
8 | },
9 | "dependencies": {
10 | "@faker-js/faker": "^9.7.0",
11 | "@prisma/client": "^6.3.1",
12 | "@types/bcrypt": "^5.0.2",
13 | "bcrypt": "^5.1.1",
14 | "prisma": "^6.6.0"
15 | },
16 | "devDependencies": {
17 | "@blog-web/eslint-config": "*",
18 | "@blog-web/typescript-config": "*",
19 | "typescript": "5.7.3"
20 | },
21 | "prisma": {
22 | "seed": "ts-node prisma/seed.ts"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/admin/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 | .yarn/install-state.gz
8 |
9 | # testing
10 | /coverage
11 |
12 | # next.js
13 | /.next/
14 | /out/
15 |
16 | # production
17 | /build
18 |
19 | # misc
20 | .DS_Store
21 | *.pem
22 |
23 | # debug
24 | npm-debug.log*
25 | yarn-debug.log*
26 | yarn-error.log*
27 |
28 | # env files (can opt-in for commiting if needed)
29 | .env*
30 |
31 | # vercel
32 | .vercel
33 |
34 | # typescript
35 | *.tsbuildinfo
36 | next-env.d.ts
37 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/student/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 | .yarn/install-state.gz
8 |
9 | # testing
10 | /coverage
11 |
12 | # next.js
13 | /.next/
14 | /out/
15 |
16 | # production
17 | /build
18 |
19 | # misc
20 | .DS_Store
21 | *.pem
22 |
23 | # debug
24 | npm-debug.log*
25 | yarn-debug.log*
26 | yarn-error.log*
27 |
28 | # env files (can opt-in for commiting if needed)
29 | .env*
30 |
31 | # vercel
32 | .vercel
33 |
34 | # typescript
35 | *.tsbuildinfo
36 | next-env.d.ts
37 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/teacher/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 | .yarn/install-state.gz
8 |
9 | # testing
10 | /coverage
11 |
12 | # next.js
13 | /.next/
14 | /out/
15 |
16 | # production
17 | /build
18 |
19 | # misc
20 | .DS_Store
21 | *.pem
22 |
23 | # debug
24 | npm-debug.log*
25 | yarn-debug.log*
26 | yarn-error.log*
27 |
28 | # env files (can opt-in for commiting if needed)
29 | .env*
30 |
31 | # vercel
32 | .vercel
33 |
34 | # typescript
35 | *.tsbuildinfo
36 | next-env.d.ts
37 |
--------------------------------------------------------------------------------
/04.chat-app/apps/chatapp/src/components/footer.tsx:
--------------------------------------------------------------------------------
1 | const Footer = () => {
2 | return (
3 |
11 | );
12 | }
13 |
14 | export default Footer;
--------------------------------------------------------------------------------
/07.portfolio/src/components/elements/skill/Circle.tsx:
--------------------------------------------------------------------------------
1 | import { forwardRef } from "react";
2 | import { cn } from "@/lib/utils";
3 |
4 | export const Circle = forwardRef<
5 | HTMLDivElement,
6 | { className?: string; children?: React.ReactNode }
7 | >(({ className, children }, ref) => {
8 | return (
9 |
16 | {children}
17 |
18 | );
19 | });
20 |
21 | Circle.displayName = "Circle";
22 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/typescript-config/base.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/tsconfig",
3 | "compilerOptions": {
4 | "declaration": true,
5 | "declarationMap": true,
6 | "esModuleInterop": true,
7 | "incremental": false,
8 | "isolatedModules": true,
9 | "lib": ["es2022", "DOM", "DOM.Iterable"],
10 | "module": "NodeNext",
11 | "moduleDetection": "force",
12 | "moduleResolution": "NodeNext",
13 | "noUncheckedIndexedAccess": true,
14 | "resolveJsonModule": true,
15 | "skipLibCheck": true,
16 | "strict": true,
17 | "target": "ES2022"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/02.Calculator/README.md:
--------------------------------------------------------------------------------
1 | # Calculator
2 |
3 | 
4 |
5 | ## Features
6 |
7 | - Perform basic operations(addition, subtraction, multiplication, and division.)
8 | - Calculate with BODMAS rule.
9 | - Perform advance operations(square root, percentage, Exponentiation (xʸ), Common Logarithm (log), and Exponential Function (eˣ)).
10 | - Store history on local storage.
11 | - toggle between light & dark mode.
12 |
13 | ### Run the App locally
14 |
15 | ```bash
16 | #go to the 02.Calculator
17 | cd 02.Calculator
18 |
19 | #install dependency
20 | yarn install
21 |
22 | #run the app
23 | yarn run dev
24 |
25 | ```
26 |
--------------------------------------------------------------------------------
/06.blog-web/packages/types/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@blog-web/types",
3 | "version": "1.0.0",
4 | "main": "index.js",
5 | "license": "MIT",
6 | "scripts": {
7 | "lint": "eslint . --max-warnings 0",
8 | "check-types": "tsc --noEmit"
9 | },
10 | "exports": {
11 | "./server": "./src/server/index.ts",
12 | "./client": "./src/client/index.ts"
13 | },
14 | "dependencies": {
15 | "react": "^19.0.0",
16 | "zod": "^3.24.2"
17 | },
18 | "devDependencies": {
19 | "@blog-web/eslint-config": "*",
20 | "@blog-web/typescript-config": "*",
21 | "@types/react": "19.0.8",
22 | "typescript": "5.7.3"
23 | }
24 | }
--------------------------------------------------------------------------------
/04.chat-app/packages/types/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@chatApp/types",
3 | "version": "1.0.0",
4 | "main": "index.js",
5 | "license": "MIT",
6 | "scripts": {
7 | "lint": "eslint . --max-warnings 0",
8 | "check-types": "tsc --noEmit"
9 | },
10 | "exports": {
11 | "./serverTypes": "./src/serverTypes.ts",
12 | "./clientTypes": "./src/clientTypes.ts"
13 | },
14 | "dependencies": {
15 | "react": "^19.0.0",
16 | "zod": "^3.24.2"
17 | },
18 | "devDependencies": {
19 | "@chatApp/eslint-config": "*",
20 | "@chatApp/typescript-config": "*",
21 | "@types/react": "19.0.8",
22 | "typescript": "5.7.3"
23 | }
24 | }
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/tic-tac-toe/src/utils/gameLogic.ts:
--------------------------------------------------------------------------------
1 | export const checkWinner = (board: string[]): string | null => {
2 | const winPatterns = [
3 | [0, 1, 2], [3, 4, 5], [6, 7, 8], // Rows
4 | [0, 3, 6], [1, 4, 7], [2, 5, 8], // Columns
5 | [0, 4, 8], [2, 4, 6] // Diagonals
6 | ];
7 |
8 | for (const [a, b, c] of winPatterns) {
9 | if (a !== undefined && b !== undefined && c !== undefined && board[a] && board[a] === board[b] && board[a] === board[c]) {
10 | return board[a]; // ✅ Return winner immediately
11 | }
12 | }
13 |
14 | return board.includes("") ? null : "Tie"; // ✅ No need for extra iterations
15 | };
16 |
17 |
18 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/types/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@stba/types",
3 | "version": "1.0.0",
4 | "main": "index.js",
5 | "license": "MIT",
6 | "scripts": {
7 | "lint": "eslint . --max-warnings 0",
8 | "check-types": "tsc --noEmit"
9 | },
10 | "exports": {
11 | "./serverTypes": "./src/server/index.ts",
12 | "./client": "./src/client/index.ts"
13 | },
14 | "dependencies": {
15 | "react": "^19.0.0",
16 | "zod": "^3.24.2"
17 | },
18 | "devDependencies": {
19 | "@stba/eslint-config": "*",
20 | "@stba/typescript-config": "*",
21 | "@types/react": "19.0.8",
22 | "typescript": "5.7.3"
23 | }
24 | }
--------------------------------------------------------------------------------
/07.portfolio/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | # alfaarghya.dev
5 |
6 | ### Shape Ideas with Technology
7 |
8 | 🚀 A personal portfolio created by Arghya Das (alfaarghya), a full-stack software developer, focused on crafting meaningful web applications with creativity and technical expertise, turning intricate ideas into real-world digital solutions, one line of code at a time
9 |
10 |
11 |
12 | ## A Glance of My Portfolio
13 |
14 |
15 |
16 | #
17 |
18 |
19 | Website is Complete, But I Will add more things over the time, so stay tuned :)
20 |
21 |
--------------------------------------------------------------------------------
/06.blog-web/apps/server/src/routes/blog.route.ts:
--------------------------------------------------------------------------------
1 | import { Router } from "express";
2 | import authenticate from "../middleware/authenticate";
3 | import { createBlog, deleteBlog, getBlog, getBlogs, updateBlog } from "../controller/blog.controller";
4 |
5 | const router = Router();
6 |
7 | //create a blog
8 | router.post("/", authenticate, createBlog);
9 |
10 | //read all blog
11 | router.get("/", authenticate, getBlogs);
12 |
13 | //read a blog
14 | router.get("/:id", authenticate, getBlog);
15 |
16 | //update a blog
17 | router.put("/:id", authenticate, updateBlog);
18 |
19 | //delete a blog
20 | router.delete("/:id", authenticate, deleteBlog);
21 |
22 |
23 | export default router;
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/tic-tac-toe/src/components/Cell.tsx:
--------------------------------------------------------------------------------
1 | import { CellProps } from "../types";
2 |
3 | const Cell = ({ value, onClick }: CellProps) => {
4 | const getCellColor = (val: string) => {
5 | if (val === "X") return "text-blue-500"; // Blue for X
6 | if (val === "O") return "text-red-500"; // Red for O
7 | return "text-gray-800"; // Default color
8 | };
9 |
10 | return (
11 |
16 | {value}
17 |
18 | );
19 | };
20 |
21 | export default Cell;
22 |
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/tic-tac-toe/src/components/ResultDisplay.tsx:
--------------------------------------------------------------------------------
1 | import { ResultProps } from "../types";
2 |
3 | const ResultDisplay = ({ result, players, currentTurn }: ResultProps) => (
4 |
5 | {result
6 | ?
7 | (result === "Tie"
8 | ?
9 |
It's a Tie!
10 | :
11 |
{result} wins the game
12 | )
13 | :
14 |
15 | Turn: {players[currentTurn] || "Waiting for players..."}
16 |
17 | }
18 |
19 | );
20 |
21 | export default ResultDisplay;
22 |
--------------------------------------------------------------------------------
/07.portfolio/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "lib": ["dom", "dom.iterable", "esnext"],
4 | "allowJs": true,
5 | "skipLibCheck": true,
6 | "strict": true,
7 | "noEmit": true,
8 | "esModuleInterop": true,
9 | "module": "esnext",
10 | "moduleResolution": "bundler",
11 | "resolveJsonModule": true,
12 | "isolatedModules": true,
13 | "jsx": "preserve",
14 | "incremental": true,
15 | "plugins": [
16 | {
17 | "name": "next"
18 | }
19 | ],
20 | "paths": {
21 | "@/*": ["./src/*"]
22 | }
23 | },
24 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
25 | "exclude": ["node_modules"]
26 | }
27 |
--------------------------------------------------------------------------------
/01.WeatherApp/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
4 | "target": "ES2022",
5 | "lib": ["ES2023"],
6 | "module": "ESNext",
7 | "skipLibCheck": true,
8 |
9 | /* Bundler mode */
10 | "moduleResolution": "bundler",
11 | "allowImportingTsExtensions": true,
12 | "isolatedModules": true,
13 | "moduleDetection": "force",
14 | "noEmit": true,
15 |
16 | /* Linting */
17 | "strict": true,
18 | "noUnusedLocals": true,
19 | "noUnusedParameters": true,
20 | "noFallthroughCasesInSwitch": true,
21 | "noUncheckedSideEffectImports": true
22 | },
23 | "include": ["vite.config.ts"]
24 | }
25 |
--------------------------------------------------------------------------------
/02.Calculator/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
4 | "target": "ES2022",
5 | "lib": ["ES2023"],
6 | "module": "ESNext",
7 | "skipLibCheck": true,
8 |
9 | /* Bundler mode */
10 | "moduleResolution": "bundler",
11 | "allowImportingTsExtensions": true,
12 | "isolatedModules": true,
13 | "moduleDetection": "force",
14 | "noEmit": true,
15 |
16 | /* Linting */
17 | "strict": true,
18 | "noUnusedLocals": true,
19 | "noUnusedParameters": true,
20 | "noFallthroughCasesInSwitch": true,
21 | "noUncheckedSideEffectImports": true
22 | },
23 | "include": ["vite.config.ts"]
24 | }
25 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/ui/src/Footer.tsx:
--------------------------------------------------------------------------------
1 | const Footer = () => {
2 | return (
3 |
14 | )
15 | }
16 |
17 | export default Footer;
18 |
--------------------------------------------------------------------------------
/06.blog-web/apps/web/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
4 | "target": "ES2022",
5 | "lib": ["ES2023"],
6 | "module": "ESNext",
7 | "skipLibCheck": true,
8 |
9 | /* Bundler mode */
10 | "moduleResolution": "bundler",
11 | "allowImportingTsExtensions": true,
12 | "isolatedModules": true,
13 | "moduleDetection": "force",
14 | "noEmit": true,
15 |
16 | /* Linting */
17 | "strict": true,
18 | "noUnusedLocals": true,
19 | "noUnusedParameters": true,
20 | "noFallthroughCasesInSwitch": true,
21 | "noUncheckedSideEffectImports": true
22 | },
23 | "include": ["vite.config.ts"]
24 | }
25 |
--------------------------------------------------------------------------------
/07.portfolio/src/screens/BootScreen.tsx:
--------------------------------------------------------------------------------
1 | "use client";
2 |
3 | import Preloader from "@/components/elements/bootscreen/BootElement";
4 | import { AnimatePresence } from "framer-motion";
5 | import React, { useEffect, useState } from "react";
6 |
7 | const BootScreen = () => {
8 | const [isLoading, setIsLoading] = useState(true);
9 | useEffect(() => {
10 | (async () => {
11 | setTimeout(() => {
12 | setIsLoading(false);
13 | document.body.style.cursor = "default";
14 | window.scrollTo(0, 0);
15 | }, 2000);
16 | })();
17 | }, []);
18 | return (
19 | {isLoading && }
20 | );
21 | };
22 |
23 | export default BootScreen;
24 |
--------------------------------------------------------------------------------
/04.chat-app/packages/types/src/clientTypes.ts:
--------------------------------------------------------------------------------
1 | export interface WebSocketOptions {
2 | chatId: string;
3 | type: MessageType;
4 | userId?: string;
5 | sender?: string,
6 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
7 | onMessage: (data: any) => void;
8 | }
9 | type MessageType = "room" | "direct";
10 |
11 |
12 | export interface ChatRoom {
13 | id: string;
14 | name: string;
15 | createdAt: string;
16 | }
17 |
18 | export interface InboxUser {
19 | id: string;
20 | username: string;
21 | }
22 |
23 | export interface User {
24 | id: string;
25 | username: string;
26 | }
27 |
28 | export interface Message {
29 | id?: string;
30 | senderId: string;
31 | content: string;
32 | createdAt?: string;
33 | sender: string;
34 | }
--------------------------------------------------------------------------------
/06.blog-web/packages/eslint-config/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@blog-web/eslint-config",
3 | "version": "0.0.0",
4 | "type": "module",
5 | "private": true,
6 | "exports": {
7 | "./base": "./base.js",
8 | "./next-js": "./next.js",
9 | "./react-internal": "./react-internal.js"
10 | },
11 | "devDependencies": {
12 | "@eslint/js": "^9.24.0",
13 | "@next/eslint-plugin-next": "^15.3.0",
14 | "eslint": "^9.24.0",
15 | "eslint-config-prettier": "^10.1.1",
16 | "eslint-plugin-only-warn": "^1.1.0",
17 | "eslint-plugin-react": "^7.37.4",
18 | "eslint-plugin-react-hooks": "^5.2.0",
19 | "eslint-plugin-turbo": "^2.5.0",
20 | "globals": "^16.0.0",
21 | "typescript": "^5.8.2",
22 | "typescript-eslint": "^8.29.0"
23 | }
24 | }
--------------------------------------------------------------------------------
/04.chat-app/packages/eslint-config/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@chatApp/eslint-config",
3 | "version": "0.0.0",
4 | "type": "module",
5 | "private": true,
6 | "exports": {
7 | "./base": "./base.js",
8 | "./next-js": "./next.js",
9 | "./react-internal": "./react-internal.js"
10 | },
11 | "devDependencies": {
12 | "@eslint/js": "^9.22.0",
13 | "@next/eslint-plugin-next": "^15.2.1",
14 | "eslint": "^9.22.0",
15 | "eslint-config-prettier": "^10.1.1",
16 | "eslint-plugin-only-warn": "^1.1.0",
17 | "eslint-plugin-react": "^7.37.4",
18 | "eslint-plugin-react-hooks": "^5.2.0",
19 | "eslint-plugin-turbo": "^2.4.4",
20 | "globals": "^16.0.0",
21 | "typescript": "^5.8.2",
22 | "typescript-eslint": "^8.26.0"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/03.tic-tac-toe/packages/eslint-config/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@tic-tac-toe/eslint-config",
3 | "version": "0.0.0",
4 | "type": "module",
5 | "private": true,
6 | "exports": {
7 | "./base": "./base.js",
8 | "./next-js": "./next.js",
9 | "./react-internal": "./react-internal.js"
10 | },
11 | "devDependencies": {
12 | "@eslint/js": "^9.21.0",
13 | "@next/eslint-plugin-next": "^15.1.6",
14 | "eslint": "^9.21.0",
15 | "eslint-config-prettier": "^10.0.1",
16 | "eslint-plugin-only-warn": "^1.1.0",
17 | "eslint-plugin-react": "^7.37.4",
18 | "eslint-plugin-react-hooks": "^5.1.0",
19 | "eslint-plugin-turbo": "^2.4.0",
20 | "globals": "^15.15.0",
21 | "typescript": "^5.7.3",
22 | "typescript-eslint": "^8.24.0"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/eslint-config/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@stba/eslint-config",
3 | "version": "0.0.0",
4 | "type": "module",
5 | "private": true,
6 | "exports": {
7 | "./base": "./base.js",
8 | "./next-js": "./next.js",
9 | "./react-internal": "./react-internal.js"
10 | },
11 | "devDependencies": {
12 | "@eslint/js": "^9.24.0",
13 | "@next/eslint-plugin-next": "^15.2.1",
14 | "eslint": "^9.24.0",
15 | "eslint-config-prettier": "^10.1.1",
16 | "eslint-plugin-only-warn": "^1.1.0",
17 | "eslint-plugin-react": "^7.37.4",
18 | "eslint-plugin-react-hooks": "^5.2.0",
19 | "eslint-plugin-turbo": "^2.5.0",
20 | "globals": "^16.0.0",
21 | "typescript": "^5.8.2",
22 | "typescript-eslint": "^8.29.0"
23 | }
24 | }
--------------------------------------------------------------------------------
/01.WeatherApp/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
4 | "target": "ES2020",
5 | "useDefineForClassFields": true,
6 | "lib": ["ES2020", "DOM", "DOM.Iterable"],
7 | "module": "ESNext",
8 | "skipLibCheck": true,
9 |
10 | /* Bundler mode */
11 | "moduleResolution": "bundler",
12 | "allowImportingTsExtensions": true,
13 | "isolatedModules": true,
14 | "moduleDetection": "force",
15 | "noEmit": true,
16 | "jsx": "react-jsx",
17 |
18 | /* Linting */
19 | "strict": true,
20 | "noUnusedLocals": true,
21 | "noUnusedParameters": true,
22 | "noFallthroughCasesInSwitch": true,
23 | "noUncheckedSideEffectImports": true
24 | },
25 | "include": ["src"]
26 | }
27 |
--------------------------------------------------------------------------------
/02.Calculator/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
4 | "target": "ES2020",
5 | "useDefineForClassFields": true,
6 | "lib": ["ES2020", "DOM", "DOM.Iterable"],
7 | "module": "ESNext",
8 | "skipLibCheck": true,
9 |
10 | /* Bundler mode */
11 | "moduleResolution": "bundler",
12 | "allowImportingTsExtensions": true,
13 | "isolatedModules": true,
14 | "moduleDetection": "force",
15 | "noEmit": true,
16 | "jsx": "react-jsx",
17 |
18 | /* Linting */
19 | "strict": true,
20 | "noUnusedLocals": true,
21 | "noUnusedParameters": true,
22 | "noFallthroughCasesInSwitch": true,
23 | "noUncheckedSideEffectImports": true
24 | },
25 | "include": ["src"]
26 | }
27 |
--------------------------------------------------------------------------------
/02.Calculator/src/components/History.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { HistoryProps } from "../types";
3 |
4 | const History: React.FC = ({ history }) => (
5 |
7 | {history.length === 0 ? (
8 |
No history yet.
9 | ) : (
10 |
11 | {history.map((entry, index) => (
12 |
13 | {entry}
14 |
15 | ))}
16 |
17 | )}
18 |
19 | );
20 |
21 | export default History;
--------------------------------------------------------------------------------
/06.blog-web/apps/web/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
4 | "target": "ES2020",
5 | "useDefineForClassFields": true,
6 | "lib": ["ES2020", "DOM", "DOM.Iterable"],
7 | "module": "ESNext",
8 | "skipLibCheck": true,
9 |
10 | /* Bundler mode */
11 | "moduleResolution": "bundler",
12 | "allowImportingTsExtensions": true,
13 | "isolatedModules": true,
14 | "moduleDetection": "force",
15 | "noEmit": true,
16 | "jsx": "react-jsx",
17 |
18 | /* Linting */
19 | "strict": true,
20 | "noUnusedLocals": true,
21 | "noUnusedParameters": true,
22 | "noFallthroughCasesInSwitch": true,
23 | "noUncheckedSideEffectImports": true
24 | },
25 | "include": ["src"]
26 | }
27 |
--------------------------------------------------------------------------------
/07.portfolio/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "alfaarghya.dev",
3 | "version": "0.0.0",
4 | "author": "alfaarghya",
5 | "private": true,
6 | "scripts": {
7 | "dev": "next dev",
8 | "build": "next build",
9 | "start": "next start",
10 | "lint": "next lint"
11 | },
12 | "dependencies": {
13 | "clsx": "^2.1.1",
14 | "framer-motion": "^11.9.0",
15 | "gsap": "^3.12.5",
16 | "next": "^14.2.13",
17 | "react": "^18",
18 | "react-dom": "^18",
19 | "tailwind-merge": "^2.5.2"
20 | },
21 | "devDependencies": {
22 | "@types/node": "^20",
23 | "@types/react": "^18",
24 | "@types/react-dom": "^18",
25 | "eslint": "^8",
26 | "eslint-config-next": "14.2.7",
27 | "postcss": "^8",
28 | "tailwindcss": "^3.4.1",
29 | "typescript": "^5"
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/04.chat-app/packages/utils/src/encryption.ts:
--------------------------------------------------------------------------------
1 | import crypto from "crypto";
2 |
3 | // eslint-disable-next-line turbo/no-undeclared-env-vars
4 | const SECRET_KEY = process.env.SECRET_KEY || "default_secret";
5 |
6 | export const encryptMessage = (message: string): string => {
7 | const cipher = crypto.createCipheriv("aes-256-cbc", SECRET_KEY, crypto.randomBytes(16));
8 | let encrypted = cipher.update(message, "utf8", "hex");
9 | encrypted += cipher.final("hex");
10 | return encrypted;
11 | };
12 |
13 | export const decryptMessage = (encryptedMessage: string): string => {
14 | const decipher = crypto.createDecipheriv("aes-256-cbc", SECRET_KEY, crypto.randomBytes(16));
15 | let decrypted = decipher.update(encryptedMessage, "hex", "utf8");
16 | decrypted += decipher.final("utf8");
17 | return decrypted;
18 | };
19 |
--------------------------------------------------------------------------------
/03.tic-tac-toe/packages/eslint-config/base.js:
--------------------------------------------------------------------------------
1 | import js from "@eslint/js";
2 | import eslintConfigPrettier from "eslint-config-prettier";
3 | import turboPlugin from "eslint-plugin-turbo";
4 | import tseslint from "typescript-eslint";
5 | import onlyWarn from "eslint-plugin-only-warn";
6 |
7 | /**
8 | * A shared ESLint configuration for the repository.
9 | *
10 | * @type {import("eslint").Linter.Config}
11 | * */
12 | export const config = [
13 | js.configs.recommended,
14 | eslintConfigPrettier,
15 | ...tseslint.configs.recommended,
16 | {
17 | plugins: {
18 | turbo: turboPlugin,
19 | },
20 | rules: {
21 | "turbo/no-undeclared-env-vars": "warn",
22 | },
23 | },
24 | {
25 | plugins: {
26 | onlyWarn,
27 | },
28 | },
29 | {
30 | ignores: ["dist/**"],
31 | },
32 | ];
33 |
--------------------------------------------------------------------------------
/04.chat-app/packages/eslint-config/base.js:
--------------------------------------------------------------------------------
1 | import js from "@eslint/js";
2 | import eslintConfigPrettier from "eslint-config-prettier";
3 | import turboPlugin from "eslint-plugin-turbo";
4 | import tseslint from "typescript-eslint";
5 | import onlyWarn from "eslint-plugin-only-warn";
6 |
7 | /**
8 | * A shared ESLint configuration for the repository.
9 | *
10 | * @type {import("eslint").Linter.Config[]}
11 | * */
12 | export const config = [
13 | js.configs.recommended,
14 | eslintConfigPrettier,
15 | ...tseslint.configs.recommended,
16 | {
17 | plugins: {
18 | turbo: turboPlugin,
19 | },
20 | rules: {
21 | "turbo/no-undeclared-env-vars": "warn",
22 | },
23 | },
24 | {
25 | plugins: {
26 | onlyWarn,
27 | },
28 | },
29 | {
30 | ignores: ["dist/**"],
31 | },
32 | ];
33 |
--------------------------------------------------------------------------------
/06.blog-web/packages/eslint-config/base.js:
--------------------------------------------------------------------------------
1 | import js from "@eslint/js";
2 | import eslintConfigPrettier from "eslint-config-prettier";
3 | import turboPlugin from "eslint-plugin-turbo";
4 | import tseslint from "typescript-eslint";
5 | import onlyWarn from "eslint-plugin-only-warn";
6 |
7 | /**
8 | * A shared ESLint configuration for the repository.
9 | *
10 | * @type {import("eslint").Linter.Config[]}
11 | * */
12 | export const config = [
13 | js.configs.recommended,
14 | eslintConfigPrettier,
15 | ...tseslint.configs.recommended,
16 | {
17 | plugins: {
18 | turbo: turboPlugin,
19 | },
20 | rules: {
21 | "turbo/no-undeclared-env-vars": "warn",
22 | },
23 | },
24 | {
25 | plugins: {
26 | onlyWarn,
27 | },
28 | },
29 | {
30 | ignores: ["dist/**"],
31 | },
32 | ];
33 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/eslint-config/base.js:
--------------------------------------------------------------------------------
1 | import js from "@eslint/js";
2 | import eslintConfigPrettier from "eslint-config-prettier";
3 | import turboPlugin from "eslint-plugin-turbo";
4 | import tseslint from "typescript-eslint";
5 | import onlyWarn from "eslint-plugin-only-warn";
6 |
7 | /**
8 | * A shared ESLint configuration for the repository.
9 | *
10 | * @type {import("eslint").Linter.Config[]}
11 | * */
12 | export const config = [
13 | js.configs.recommended,
14 | eslintConfigPrettier,
15 | ...tseslint.configs.recommended,
16 | {
17 | plugins: {
18 | turbo: turboPlugin,
19 | },
20 | rules: {
21 | "turbo/no-undeclared-env-vars": "warn",
22 | },
23 | },
24 | {
25 | plugins: {
26 | onlyWarn,
27 | },
28 | },
29 | {
30 | ignores: ["dist/**"],
31 | },
32 | ];
33 |
--------------------------------------------------------------------------------
/06.blog-web/apps/web/src/components/LabelledInput.tsx:
--------------------------------------------------------------------------------
1 | import { LabelledInputType } from "@blog-web/types/client";
2 |
3 | const LabelledInput = ({
4 | type,
5 | label,
6 | placeholder,
7 | onChange,
8 | }: LabelledInputType) => {
9 | return (
10 | <>
11 |
12 |
13 | {label}
14 |
15 |
22 |
23 | >
24 | );
25 | };
26 |
27 | export default LabelledInput;
28 |
--------------------------------------------------------------------------------
/07.portfolio/public/dockSvg/terminal-dock.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/07.portfolio/src/components/ui/Dock.tsx:
--------------------------------------------------------------------------------
1 | "use client";
2 | import React from "react";
3 | import DockElement from "@/components/elements/dock/DockElement";
4 | import { motion } from "framer-motion";
5 | import { dockItems } from "@/stores/dockStore";
6 |
7 | const Dock = () => {
8 | return (
9 |
21 |
26 |
27 | );
28 | };
29 |
30 | export default Dock;
31 |
--------------------------------------------------------------------------------
/06.blog-web/packages/types/src/server/validators/auth.validator.ts:
--------------------------------------------------------------------------------
1 | import { z } from "zod";
2 |
3 | //signup validator
4 | export const SignupSchema = z.object({
5 | name: z.string().nonempty("name can't be empty"),
6 | email: z.string().email("Invalid email address").nonempty("email can't be empty"),
7 | username: z.string().max(25, "username must be 25 or fewer characters long").nonempty("username can't be empty"),
8 | password: z.string().min(8, "password must be at least 8 characters long").nonempty("password can't be empty"),
9 | });
10 |
11 | //signin validator
12 | export const SigninSchema = z.object({
13 | username: z.string().max(25, "username must be 25 or fewer characters long").nonempty("username can't be empty"),
14 | password: z.string().min(8, "password must be at least 8 characters long").nonempty("password can't be empty"),
15 | });
16 |
--------------------------------------------------------------------------------
/04.chat-app/apps/server/src/statusCode/response.ts:
--------------------------------------------------------------------------------
1 | export enum Status {
2 | Success = 200,
3 | NoContent = 204,
4 | Unauthorized = 401,
5 | Forbidden = 403,
6 | NotFound = 404,
7 | RequestTimeout = 408,
8 | Conflict = 409,
9 | InvalidInput = 411,
10 | InternalServerError = 500,
11 | BadGateway = 502,
12 | }
13 |
14 | export const StatusMessages: Record = {
15 | [Status.Success]: "Request successful",
16 | [Status.NoContent]: "No Content",
17 | [Status.Unauthorized]: "Unauthorized access",
18 | [Status.Forbidden]: "Access forbidden",
19 | [Status.NotFound]: "Resource not found",
20 | [Status.RequestTimeout]: "Request timed out",
21 | [Status.Conflict]: "Conflict in request",
22 | [Status.InvalidInput]: "Invalid input",
23 | [Status.InternalServerError]: "Internal server error",
24 | [Status.BadGateway]: "Bad gateway",
25 | };
--------------------------------------------------------------------------------
/06.blog-web/apps/server/src/statusCode/response.ts:
--------------------------------------------------------------------------------
1 | export enum Status {
2 | Success = 200,
3 | NoContent = 204,
4 | Unauthorized = 401,
5 | Forbidden = 403,
6 | NotFound = 404,
7 | RequestTimeout = 408,
8 | Conflict = 409,
9 | InvalidInput = 411,
10 | InternalServerError = 500,
11 | BadGateway = 502,
12 | }
13 |
14 | export const StatusMessages: Record = {
15 | [Status.Success]: "Request successful",
16 | [Status.NoContent]: "No Content",
17 | [Status.Unauthorized]: "Unauthorized access",
18 | [Status.Forbidden]: "Access forbidden",
19 | [Status.NotFound]: "Resource not found",
20 | [Status.RequestTimeout]: "Request timed out",
21 | [Status.Conflict]: "Conflict in request",
22 | [Status.InvalidInput]: "Invalid input",
23 | [Status.InternalServerError]: "Internal server error",
24 | [Status.BadGateway]: "Bad gateway",
25 | };
--------------------------------------------------------------------------------
/01.WeatherApp/eslint.config.js:
--------------------------------------------------------------------------------
1 | import js from '@eslint/js'
2 | import globals from 'globals'
3 | import reactHooks from 'eslint-plugin-react-hooks'
4 | import reactRefresh from 'eslint-plugin-react-refresh'
5 | import tseslint from 'typescript-eslint'
6 |
7 | export default tseslint.config(
8 | { ignores: ['dist'] },
9 | {
10 | extends: [js.configs.recommended, ...tseslint.configs.recommended],
11 | files: ['**/*.{ts,tsx}'],
12 | languageOptions: {
13 | ecmaVersion: 2020,
14 | globals: globals.browser,
15 | },
16 | plugins: {
17 | 'react-hooks': reactHooks,
18 | 'react-refresh': reactRefresh,
19 | },
20 | rules: {
21 | ...reactHooks.configs.recommended.rules,
22 | 'react-refresh/only-export-components': [
23 | 'warn',
24 | { allowConstantExport: true },
25 | ],
26 | },
27 | },
28 | )
29 |
--------------------------------------------------------------------------------
/02.Calculator/eslint.config.js:
--------------------------------------------------------------------------------
1 | import js from '@eslint/js'
2 | import globals from 'globals'
3 | import reactHooks from 'eslint-plugin-react-hooks'
4 | import reactRefresh from 'eslint-plugin-react-refresh'
5 | import tseslint from 'typescript-eslint'
6 |
7 | export default tseslint.config(
8 | { ignores: ['dist'] },
9 | {
10 | extends: [js.configs.recommended, ...tseslint.configs.recommended],
11 | files: ['**/*.{ts,tsx}'],
12 | languageOptions: {
13 | ecmaVersion: 2020,
14 | globals: globals.browser,
15 | },
16 | plugins: {
17 | 'react-hooks': reactHooks,
18 | 'react-refresh': reactRefresh,
19 | },
20 | rules: {
21 | ...reactHooks.configs.recommended.rules,
22 | 'react-refresh/only-export-components': [
23 | 'warn',
24 | { allowConstantExport: true },
25 | ],
26 | },
27 | },
28 | )
29 |
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/server/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "server",
3 | "version": "1.0.0",
4 | "main": "index.js",
5 | "license": "MIT",
6 | "scripts": {
7 | "dev": "nodemon --exec ts-node src/index.ts",
8 | "build": "tsc -b",
9 | "start": "node dist/index.js",
10 | "lint": "eslint . --max-warnings 0",
11 | "check-types": "tsc --noEmit"
12 | },
13 | "dependencies": {
14 | "@types/cors": "^2.8.17",
15 | "@types/express": "^5.0.0",
16 | "cors": "^2.8.5",
17 | "dotenv": "^16.4.7",
18 | "express": "^4.21.2",
19 | "nodemon": "^3.1.9",
20 | "socket.io": "^4.8.1",
21 | "ts-node": "^10.9.2"
22 | },
23 | "devDependencies": {
24 | "@tic-tac-toe/eslint-config": "*",
25 | "@tic-tac-toe/typescript-config": "*",
26 | "@types/node": "^22",
27 | "eslint": "^9.20.0",
28 | "typescript": "5.7.3"
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/ui/src/context/UserContext.tsx:
--------------------------------------------------------------------------------
1 | 'use client';
2 |
3 | import { createContext, useContext, useEffect, useState } from 'react';
4 |
5 | type UserContextType = {
6 | name: string;
7 | setName: (name: string) => void;
8 | };
9 |
10 | const UserContext = createContext({
11 | name: '',
12 | setName: () => { },
13 | });
14 |
15 | export const UserProvider = ({ children }: { children: React.ReactNode }) => {
16 | const [name, setName] = useState('');
17 |
18 | useEffect(() => {
19 | const storedName = localStorage.getItem('name') || '';
20 | setName(storedName);
21 | }, []);
22 |
23 | return (
24 |
25 | {children}
26 |
27 | );
28 | };
29 |
30 | export const useUser = () => useContext(UserContext);
31 |
--------------------------------------------------------------------------------
/06.blog-web/apps/web/eslint.config.js:
--------------------------------------------------------------------------------
1 | import js from '@eslint/js'
2 | import globals from 'globals'
3 | import reactHooks from 'eslint-plugin-react-hooks'
4 | import reactRefresh from 'eslint-plugin-react-refresh'
5 | import tseslint from 'typescript-eslint'
6 |
7 | export default tseslint.config(
8 | { ignores: ['dist'] },
9 | {
10 | extends: [js.configs.recommended, ...tseslint.configs.recommended],
11 | files: ['**/*.{ts,tsx}'],
12 | languageOptions: {
13 | ecmaVersion: 2020,
14 | globals: globals.browser,
15 | },
16 | plugins: {
17 | 'react-hooks': reactHooks,
18 | 'react-refresh': reactRefresh,
19 | },
20 | rules: {
21 | ...reactHooks.configs.recommended.rules,
22 | 'react-refresh/only-export-components': [
23 | 'warn',
24 | { allowConstantExport: true },
25 | ],
26 | },
27 | },
28 | )
29 |
--------------------------------------------------------------------------------
/07.portfolio/public/dockSvg/email-circle-fill-svgrepo-com.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/server/src/statusCode/response.ts:
--------------------------------------------------------------------------------
1 | export enum Status {
2 | Success = 200,
3 | NoContent = 204,
4 | Unauthorized = 401,
5 | Forbidden = 403,
6 | NotFound = 404,
7 | RequestTimeout = 408,
8 | Conflict = 409,
9 | InvalidInput = 411,
10 | InternalServerError = 500,
11 | BadGateway = 502,
12 | }
13 |
14 | export const StatusMessages: Record = {
15 | [Status.Success]: "Request successful",
16 | [Status.NoContent]: "No Content",
17 | [Status.Unauthorized]: "Unauthorized access",
18 | [Status.Forbidden]: "Access forbidden",
19 | [Status.NotFound]: "Resource not found",
20 | [Status.RequestTimeout]: "Request timed out",
21 | [Status.Conflict]: "Conflict in request",
22 | [Status.InvalidInput]: "Invalid input",
23 | [Status.InternalServerError]: "Internal server error",
24 | [Status.BadGateway]: "Bad gateway",
25 | };
--------------------------------------------------------------------------------
/06.blog-web/apps/web/src/pages/Blogs.tsx:
--------------------------------------------------------------------------------
1 | import Appbar from "../components/Appbar";
2 | import BlogCard from "../components/BlogCard";
3 | import { useBlogs } from "../hooks";
4 |
5 | const Blog = () => {
6 | const { loading, blogs } = useBlogs(); //retrieve blogs using custom hook
7 |
8 | // can't load the blogs
9 | if (loading) {
10 | return Loading . . . .
;
11 | }
12 |
13 | //load the blog
14 | return (
15 |
16 |
17 |
18 | {blogs.map((blog) => (
19 |
25 | ))}
26 |
27 |
28 | );
29 | };
30 |
31 | export default Blog;
32 |
--------------------------------------------------------------------------------
/06.blog-web/packages/types/src/server/validators/blog.validator.ts:
--------------------------------------------------------------------------------
1 | import { z } from "zod";
2 |
3 | //create blog validator
4 | export const CreateBlogSchema = z.object({
5 | userId: z.string().uuid("uuid required").nonempty("userId can't be empty"),
6 | title: z.string().nonempty("Title can't be empty"),
7 | content: z.string().nonempty("content can't be empty"),
8 | });
9 |
10 | //update a blog validator
11 | export const UpdateBlogSchema = z.object({
12 | id: z.string().uuid("uuid required").nonempty("id can't be empty"),
13 | userId: z.string().uuid("uuid required").nonempty("userId can't be empty"),
14 | title: z.string().optional(),
15 | content: z.string().optional(),
16 | });
17 |
18 | //delete a blog validator
19 | export const DeleteBlogSchema = z.object({
20 | id: z.string().uuid("uuid required").nonempty("id can't be empty"),
21 | userId: z.string().uuid("uuid required").nonempty("userId can't be empty"),
22 | });
--------------------------------------------------------------------------------
/01.WeatherApp/src/UI/DotsLoading.css:
--------------------------------------------------------------------------------
1 | /* DotsLoading.css */
2 | .dot {
3 | @apply h-5 w-5 mr-2 rounded-full bg-blue-200;
4 | animation: pulse 1.5s infinite ease-in-out;
5 | }
6 |
7 | .dot:last-child {
8 | @apply mr-0;
9 | }
10 |
11 | .dot:nth-child(1) {
12 | animation-delay: -0.3s;
13 | }
14 |
15 | .dot:nth-child(2) {
16 | animation-delay: -0.1s;
17 | }
18 |
19 | .dot:nth-child(3) {
20 | animation-delay: 0.1s;
21 | }
22 |
23 | @keyframes pulse {
24 | 0% {
25 | transform: scale(0.8);
26 | background-color: #b3d4fc;
27 | box-shadow: 0 0 0 0 rgba(178, 212, 252, 0.7);
28 | }
29 |
30 | 50% {
31 | transform: scale(1.2);
32 | background-color: #6793fb;
33 | box-shadow: 0 0 0 10px rgba(178, 212, 252, 0);
34 | }
35 |
36 | 100% {
37 | transform: scale(0.8);
38 | background-color: #b3d4fc;
39 | box-shadow: 0 0 0 0 rgba(178, 212, 252, 0.7);
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/admin/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "admin",
3 | "version": "0.1.0",
4 | "type": "module",
5 | "private": true,
6 | "scripts": {
7 | "dev": "next dev --turbopack --port 3000",
8 | "build": "next build",
9 | "start": "next start",
10 | "lint": "next lint --max-warnings 0",
11 | "check-types": "tsc --noEmit"
12 | },
13 | "dependencies": {
14 | "@stba/types": "*",
15 | "@stba/utils": "*",
16 | "@stba/ui": "*",
17 | "@tailwindcss/postcss": "^4.0.6",
18 | "next": "^15.2.4",
19 | "react": "^19.1.0",
20 | "react-dom": "^19.1.0",
21 | "tailwindcss": "^4.0.6"
22 | },
23 | "devDependencies": {
24 | "@stba/eslint-config": "*",
25 | "@stba/typescript-config": "*",
26 | "@types/node": "^22.14.0",
27 | "@types/react": "19.1.0",
28 | "@types/react-dom": "19.1.1",
29 | "eslint": "^9.24.0",
30 | "typescript": "5.8.2"
31 | }
32 | }
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/server/src/routes/teacher.route.ts:
--------------------------------------------------------------------------------
1 | import { Router } from "express";
2 | import authenticate from "../middleware/authenticate";
3 | import { authorizeTeacher } from "../middleware/authorize";
4 | import { getAppointments, getMessages, sendMessage, updateAppointmentStatus } from "../controller/teacher.controller";
5 |
6 | const router = Router();
7 |
8 | // Get appointments for a teacher based on status
9 | router.get("/appointment/:status", [authenticate, authorizeTeacher], getAppointments);
10 |
11 | //APPROVED/CANCELLED student appointment request
12 | router.put("/appointment/:id", [authenticate, authorizeTeacher], updateAppointmentStatus);
13 |
14 | //Send message by teacher
15 | router.post("/messages/:id", [authenticate, authorizeTeacher], sendMessage);
16 |
17 | //Send message by teacher
18 | router.get("/messages/:id", [authenticate, authorizeTeacher], getMessages);
19 |
20 | export default router;
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/student/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "student",
3 | "version": "0.1.0",
4 | "type": "module",
5 | "private": true,
6 | "scripts": {
7 | "dev": "next dev --turbopack --port 3002",
8 | "build": "next build",
9 | "start": "next start",
10 | "lint": "next lint --max-warnings 0",
11 | "check-types": "tsc --noEmit"
12 | },
13 | "dependencies": {
14 | "@stba/types": "*",
15 | "@stba/utils": "*",
16 | "@stba/ui": "*",
17 | "@tailwindcss/postcss": "^4.0.6",
18 | "next": "^15.2.4",
19 | "react": "^19.1.0",
20 | "react-dom": "^19.1.0",
21 | "tailwindcss": "^4.0.6"
22 | },
23 | "devDependencies": {
24 | "@stba/eslint-config": "*",
25 | "@stba/typescript-config": "*",
26 | "@types/node": "^22.14.0",
27 | "@types/react": "19.1.0",
28 | "@types/react-dom": "19.1.1",
29 | "eslint": "^9.24.0",
30 | "typescript": "5.8.2"
31 | }
32 | }
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/teacher/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "teacher",
3 | "version": "0.1.0",
4 | "type": "module",
5 | "private": true,
6 | "scripts": {
7 | "dev": "next dev --turbopack --port 3001",
8 | "build": "next build",
9 | "start": "next start",
10 | "lint": "next lint --max-warnings 0",
11 | "check-types": "tsc --noEmit"
12 | },
13 | "dependencies": {
14 | "@stba/types": "*",
15 | "@stba/utils": "*",
16 | "@stba/ui": "*",
17 | "@tailwindcss/postcss": "^4.0.6",
18 | "next": "^15.2.4",
19 | "react": "^19.1.0",
20 | "react-dom": "^19.1.0",
21 | "tailwindcss": "^4.0.6"
22 | },
23 | "devDependencies": {
24 | "@stba/eslint-config": "*",
25 | "@stba/typescript-config": "*",
26 | "@types/node": "^22.14.0",
27 | "@types/react": "19.1.0",
28 | "@types/react-dom": "19.1.1",
29 | "eslint": "^9.24.0",
30 | "typescript": "5.8.2"
31 | }
32 | }
--------------------------------------------------------------------------------
/02.Calculator/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "calculator",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "tsc -b && vite build",
9 | "lint": "eslint .",
10 | "preview": "vite preview"
11 | },
12 | "dependencies": {
13 | "@tailwindcss/vite": "^4.0.7",
14 | "mathjs": "^14.2.1",
15 | "react": "^19.0.0",
16 | "react-dom": "^19.0.0",
17 | "remixicon": "^4.6.0",
18 | "tailwindcss": "^4.0.7"
19 | },
20 | "devDependencies": {
21 | "@eslint/js": "^9.19.0",
22 | "@types/react": "^19.0.8",
23 | "@types/react-dom": "^19.0.3",
24 | "@vitejs/plugin-react": "^4.3.4",
25 | "eslint": "^9.19.0",
26 | "eslint-plugin-react-hooks": "^5.0.0",
27 | "eslint-plugin-react-refresh": "^0.4.18",
28 | "globals": "^15.14.0",
29 | "typescript": "~5.7.2",
30 | "typescript-eslint": "^8.22.0",
31 | "vite": "^6.1.0"
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/07.portfolio/src/components/elements/skill/cards/CardType2.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { Circle } from "../Circle";
3 | import Image from "next/image";
4 |
5 | const CardType2 = () => {
6 | return (
7 |
8 |
9 |
10 |
16 |
17 |
Complete Site
18 |
19 |
20 | );
21 | };
22 |
23 | export default CardType2;
24 |
--------------------------------------------------------------------------------
/03.tic-tac-toe/apps/tic-tac-toe/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "tic-tac-toe-game",
3 | "version": "0.1.0",
4 | "type": "module",
5 | "private": true,
6 | "scripts": {
7 | "dev": "next dev --turbopack --port 3000",
8 | "build": "next build",
9 | "start": "next start",
10 | "lint": "next lint --max-warnings 0",
11 | "check-types": "tsc --noEmit"
12 | },
13 | "dependencies": {
14 | "next": "^15.1.6",
15 | "react": "^19.0.0",
16 | "react-dom": "^19.0.0",
17 | "@tailwindcss/postcss": "^4.0.6",
18 | "postcss": "^8.5.2",
19 | "tailwindcss": "^4.0.6",
20 | "socket.io": "^4.8.1",
21 | "socket.io-client": "^4.8.1"
22 | },
23 | "devDependencies": {
24 | "@tic-tac-toe/eslint-config": "*",
25 | "@tic-tac-toe/typescript-config": "*",
26 | "@types/node": "^22",
27 | "@types/react": "19.0.8",
28 | "@types/react-dom": "19.0.3",
29 | "eslint": "^9.21.0",
30 | "typescript": "5.7.3"
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/07.portfolio/src/app/layout.tsx:
--------------------------------------------------------------------------------
1 | import type { Metadata } from "next";
2 | import { Syne } from "next/font/google";
3 | import "./globals.css";
4 |
5 | const syne = Syne({
6 | subsets: ["latin"],
7 | weight: ["400", "500", "600", "700", "800"],
8 | });
9 |
10 | export const metadata: Metadata = {
11 | title: "alfaarghya.dev - Shape Ideas with Technology",
12 | description:
13 | "A personal portfolio created by Arghya Das (alfaarghya), a full-stack software developer, focused on crafting meaningful web applications with creativity and technical expertise, turning intricate ideas into real-world digital solutions, one line of code at a time",
14 | };
15 |
16 | export default function RootLayout({
17 | children,
18 | }: Readonly<{
19 | children: React.ReactNode;
20 | }>) {
21 | return (
22 |
23 |
24 | {children}
25 |
26 |
27 | );
28 | }
29 |
--------------------------------------------------------------------------------
/06.blog-web/apps/web/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "web",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "tsc -b && vite build",
9 | "lint": "eslint .",
10 | "preview": "vite preview"
11 | },
12 | "dependencies": {
13 | "@tailwindcss/vite": "^4.1.4",
14 | "axios": "^1.8.4",
15 | "react": "^19.0.0",
16 | "react-dom": "^19.0.0",
17 | "react-router-dom": "^7.5.1",
18 | "tailwindcss": "^4.1.4"
19 | },
20 | "devDependencies": {
21 | "@blog-web/types": "*",
22 | "@eslint/js": "^9.22.0",
23 | "@types/react": "^19.0.10",
24 | "@types/react-dom": "^19.0.4",
25 | "@vitejs/plugin-react": "^4.3.4",
26 | "eslint": "^9.22.0",
27 | "eslint-plugin-react-hooks": "^5.2.0",
28 | "eslint-plugin-react-refresh": "^0.4.19",
29 | "globals": "^16.0.0",
30 | "typescript": "~5.7.2",
31 | "typescript-eslint": "^8.26.1",
32 | "vite": "^6.3.1"
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/04.chat-app/apps/server/src/routes/chat.route.ts:
--------------------------------------------------------------------------------
1 | import { Router } from "express";
2 | import authenticate from "../middleware/authenticate";
3 | import { createRoom, deleteRoom, getMessages, getRoomDetails, getUserChats, joinRoom, updateRoom } from "../controller/chatController";
4 |
5 |
6 | const router = Router();
7 |
8 | //get the list of rooms and inboxes
9 | router.get("/lists", authenticate, getUserChats);
10 |
11 | //get the message history of a room or inbox
12 | router.get("/:chatId", authenticate, getMessages);
13 |
14 | //create a room
15 | router.post("/room", authenticate, createRoom);
16 |
17 | //get the list of people in the room
18 | router.get("/room/:roomId", authenticate, getRoomDetails);
19 |
20 | //join a room
21 | router.put("/room/join-room", authenticate, joinRoom);
22 |
23 | //update room -> rename or kick user
24 | router.put("/room/:roomId", authenticate, updateRoom);
25 |
26 | //delete a room
27 | router.delete("/room/:roomId", authenticate, deleteRoom);
28 |
29 | export default router;
30 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/types/src/client/Types.ts:
--------------------------------------------------------------------------------
1 | import { AppointmentStatus, Status } from "./enum";
2 |
3 | export type Student = {
4 | id: string;
5 | name: string;
6 | email: string;
7 | status: Status
8 | };
9 |
10 | export interface Appointment {
11 | id: string;
12 | teacherId: string;
13 | status: AppointmentStatus;
14 | date: Date;
15 | studentId: string;
16 | student: {
17 | id: string;
18 | name: string;
19 | email: string;
20 | };
21 | }
22 |
23 | export interface Message {
24 | id: string;
25 | createdAt: string;
26 | content: string;
27 | senderId: string;
28 | receiverId: string;
29 | }
30 |
31 | export interface Teacher {
32 | id: string;
33 | name: string;
34 | email: string;
35 | subject: string | null;
36 | department: string | null;
37 | }
38 |
39 | export interface StudentAppointment {
40 | id: string;
41 | teacherId: string;
42 | studentId: string;
43 | status: AppointmentStatus;
44 | date: string;
45 | teacher: Teacher;
46 | };
--------------------------------------------------------------------------------
/07.portfolio/src/types/skillType.ts:
--------------------------------------------------------------------------------
1 | import { ReactNode, RefObject } from "react";
2 |
3 | export type card1Type = {
4 | title: string;
5 | icon: string;
6 | };
7 |
8 | export interface CardRevealProps {
9 | children: ReactNode; // Accept children instead of cards
10 | className?: string;
11 | }
12 |
13 | export interface CardProps {
14 | children: ReactNode;
15 | progress: any;
16 | range: [number, number];
17 | index: number;
18 | }
19 |
20 | export interface AnimatedBeamProps {
21 | className?: string;
22 | containerRef: RefObject; // Container ref
23 | fromRef: RefObject;
24 | toRef: RefObject;
25 | curvature?: number;
26 | reverse?: boolean;
27 | pathColor?: string;
28 | pathWidth?: number;
29 | pathOpacity?: number;
30 | gradientStartColor?: string;
31 | gradientStopColor?: string;
32 | delay?: number;
33 | duration?: number;
34 | startXOffset?: number;
35 | startYOffset?: number;
36 | endXOffset?: number;
37 | endYOffset?: number;
38 | }
39 |
--------------------------------------------------------------------------------
/06.blog-web/apps/web/src/App.tsx:
--------------------------------------------------------------------------------
1 | import { BrowserRouter, Route, Routes } from "react-router-dom";
2 | import Signup from "./pages/Signup";
3 | import Signin from "./pages/Signin";
4 | import Blogs from "./pages/Blogs";
5 | import Blog from "./pages/Blog";
6 | import CreateBlog from "./pages/CreateBlog";
7 | import UpdateBlog from "./pages/UpdateBlog";
8 |
9 | const App = () => {
10 | return (
11 | <>
12 |
13 |
14 | {/* all routes */}
15 | } />
16 | } />
17 | } />
18 | } />
19 | } />
20 | } />
21 | } />
22 |
23 |
24 | >
25 | );
26 | };
27 |
28 | export default App;
29 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/server/src/routes/student.route.ts:
--------------------------------------------------------------------------------
1 | import { Router } from "express";
2 | import authenticate from "../middleware/authenticate";
3 | import { authorizeStudent } from "../middleware/authorize";
4 | import { bookAppointment, cancelAppointment, getAppointments, getMessages, searchTeachers } from "../controller/student.controller";
5 |
6 | const router = Router();
7 |
8 | //search teachers by name/department/subject
9 | router.get("/search", [authenticate, authorizeStudent], searchTeachers);
10 |
11 | //book an appointment with teacher
12 | router.post("/appointment", [authenticate, authorizeStudent], bookAppointment);
13 |
14 | //get all appointments
15 | router.get("/appointment", [authenticate, authorizeStudent], getAppointments);
16 |
17 | //cancel an appointment
18 | router.delete("/appointment/:id", [authenticate, authorizeStudent], cancelAppointment);
19 |
20 | //get messages for an appointment
21 | router.get("/messages/:appointmentId", [authenticate, authorizeStudent], getMessages);
22 |
23 | export default router;
--------------------------------------------------------------------------------
/07.portfolio/public/dockSvg/dock-menu.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/07.portfolio/public/dockSvg/linkedin-dock.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/ui/turbo/generators/config.ts:
--------------------------------------------------------------------------------
1 | import type { PlopTypes } from "@turbo/gen";
2 |
3 | // Learn more about Turborepo Generators at https://turbo.build/docs/core-concepts/monorepos/code-generation
4 |
5 | export default function generator(plop: PlopTypes.NodePlopAPI): void {
6 | // A simple generator to add a new React component to the internal UI library
7 | plop.setGenerator("react-component", {
8 | description: "Adds a new react component",
9 | prompts: [
10 | {
11 | type: "input",
12 | name: "name",
13 | message: "What is the name of the component?",
14 | },
15 | ],
16 | actions: [
17 | {
18 | type: "add",
19 | path: "src/{{kebabCase name}}.tsx",
20 | templateFile: "templates/component.hbs",
21 | },
22 | {
23 | type: "append",
24 | path: "package.json",
25 | pattern: /"exports": {(?)/g,
26 | template: ' "./{{kebabCase name}}": "./src/{{kebabCase name}}.tsx",',
27 | },
28 | ],
29 | });
30 | }
31 |
--------------------------------------------------------------------------------
/04.chat-app/apps/chatapp/src/hooks/useUsername.ts:
--------------------------------------------------------------------------------
1 | import { useEffect, useState } from "react";
2 |
3 | export const useUsername = () => {
4 | const [username, setUsername] = useState(null);
5 |
6 | useEffect(() => {
7 | const stored = localStorage.getItem("username");
8 | setUsername(stored);
9 |
10 | const interval = setInterval(() => {
11 | const current = localStorage.getItem("username");
12 | if (current !== username) setUsername(current);
13 | }, 400); // small interval to check for changes in same tab
14 |
15 | return () => clearInterval(interval);
16 | }, [username]);
17 |
18 | const login = (name: string, userId: string) => {
19 | localStorage.setItem("username", name);
20 | localStorage.setItem("userId", userId);
21 | setUsername(name);
22 | };
23 |
24 | const logout = () => {
25 | localStorage.removeItem("username");
26 | localStorage.removeItem("userId");
27 | setUsername(null);
28 | document.cookie = "token=; Max-Age=0; path=/";
29 | };
30 |
31 | return { username, login, logout };
32 | };
33 |
--------------------------------------------------------------------------------
/07.portfolio/public/svg/back-mongodb.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/01.WeatherApp/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "weather-app",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "tsc -b && vite build",
9 | "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
10 | "preview": "vite preview"
11 | },
12 | "dependencies": {
13 | "@types/axios": "^0.14.0",
14 | "axios": "^1.7.2",
15 | "dotenv": "^16.4.5",
16 | "react": "^18.3.1",
17 | "react-dom": "^18.3.1",
18 | "remixicon": "^4.3.0"
19 | },
20 | "devDependencies": {
21 | "@types/react": "^18.3.3",
22 | "@types/react-dom": "^18.3.0",
23 | "@typescript-eslint/eslint-plugin": "^7.13.1",
24 | "@typescript-eslint/parser": "^7.13.1",
25 | "@vitejs/plugin-react": "^4.3.1",
26 | "autoprefixer": "^10.4.19",
27 | "eslint": "^8.57.0",
28 | "eslint-plugin-react-hooks": "^4.6.2",
29 | "eslint-plugin-react-refresh": "^0.4.7",
30 | "postcss": "^8.4.39",
31 | "tailwindcss": "^3.4.4",
32 | "typescript": "^5.2.2",
33 | "vite": "^5.3.1"
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/06.blog-web/apps/web/src/pages/Blog.tsx:
--------------------------------------------------------------------------------
1 | import { useParams } from "react-router-dom";
2 | import Appbar from "../components/Appbar";
3 | import { useBlog } from "../hooks";
4 | import BlogRead from "../components/BlogRead";
5 |
6 | const Blog = () => {
7 | const { id } = useParams(); //blog id from URL params
8 | const { loading, blog } = useBlog({ id: id || "" }); //retrieve blog using custom hook
9 | console.log(blog);
10 |
11 |
12 | // can't load the blog
13 | if (loading) {
14 | return Loading . . . .
;
15 | }
16 |
17 | //load the blog
18 | if (!blog) {
19 | return Blog not found
;
20 | }
21 |
22 | return (
23 |
35 | );
36 | };
37 |
38 | export default Blog;
39 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/server/src/routes/admin.route.ts:
--------------------------------------------------------------------------------
1 | import { Router } from "express";
2 | import authenticate from "../middleware/authenticate";
3 | import { authorizeAdmin } from "../middleware/authorize";
4 | import { addTeacher, removeTeacher, getStudents, getTeachers, updateStudentStatus, updateTeacher } from "../controller/admin.controller";
5 |
6 | const router = Router();
7 |
8 | //add teacher
9 | router.post("/teacher", [authenticate, authorizeAdmin], addTeacher);
10 |
11 | //get teachers
12 | router.get("/teacher", [authenticate, authorizeAdmin], getTeachers);
13 |
14 | //update teacher
15 | router.put("/teacher/:teacherId", [authenticate, authorizeAdmin], updateTeacher);
16 |
17 | //remove teacher
18 | router.delete("/teacher/:teacherId", [authenticate, authorizeAdmin], removeTeacher);
19 |
20 |
21 |
22 | // Approve / Cancel student
23 | router.put("/student/register/:studentId", [authenticate, authorizeAdmin], updateStudentStatus)
24 |
25 | // get all students
26 | router.get("/student/:status", [authenticate, authorizeAdmin], getStudents);
27 |
28 |
29 | export default router;
--------------------------------------------------------------------------------
/06.blog-web/apps/server/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "server",
3 | "version": "0.1.0",
4 | "description": "a server for stba",
5 | "main": "index.js",
6 | "license": "MIT",
7 | "scripts": {
8 | "dev": "nodemon --exec ts-node src/index.ts",
9 | "build": "tsc -b",
10 | "start": "node dist/index.js",
11 | "lint": "eslint . --max-warnings 0",
12 | "check-types": "tsc --noEmit"
13 | },
14 | "dependencies": {
15 | "@blog-web/db": "*",
16 | "@blog-web/types": "*",
17 | "@types/cookie-parser": "^1.4.8",
18 | "@types/cors": "^2.8.17",
19 | "@types/express": "^5.0.0",
20 | "@types/jsonwebtoken": "^9.0.9",
21 | "bcryptjs": "^3.0.2",
22 | "cookie-parser": "^1.4.7",
23 | "cors": "^2.8.5",
24 | "dotenv": "^16.4.7",
25 | "express": "^4.21.2",
26 | "jsonwebtoken": "^9.0.2",
27 | "nodemon": "^3.1.9",
28 | "ts-node": "^10.9.2"
29 | },
30 | "devDependencies": {
31 | "@blog-web/eslint-config": "*",
32 | "@blog-web/typescript-config": "*",
33 | "@types/node": "^22",
34 | "eslint": "^9.20.0",
35 | "typescript": "5.7.3"
36 | }
37 | }
--------------------------------------------------------------------------------
/04.chat-app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "04.chat-app",
3 | "private": true,
4 | "scripts": {
5 | "build": "turbo run build",
6 | "dev": "turbo run dev",
7 | "db:migrate": "cd packages/db && yarn prisma migrate dev && cd ../..",
8 | "db:generate": "cd packages/db && yarn prisma generate && cd ../..",
9 | "db:seed": "cd packages/db && yarn prisma db seed && cd ../..",
10 | "db:show": "cd packages/db && yarn prisma studio && cd ../..",
11 | "lint": "turbo run lint",
12 | "format": "prettier --write \"**/*.{ts,tsx,md}\"",
13 | "check-types": "turbo run check-types"
14 | },
15 | "devDependencies": {
16 | "prettier": "^3.5.3",
17 | "turbo": "^2.4.4",
18 | "typescript": "5.8.2"
19 | },
20 | "lint-staged": {
21 | "*.{ts,tsx,js,jsx}": "eslint --fix",
22 | "*.{json,md,css,scss}": "prettier --write"
23 | },
24 | "engines": {
25 | "node": ">=18"
26 | },
27 | "packageManager": "yarn@1.22.22",
28 | "workspaces": [
29 | "apps/*",
30 | "packages/*"
31 | ],
32 | "dependencies": {
33 | "eslint": "^9.20.1",
34 | "lint-staged": "^15.4.3"
35 | }
36 | }
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/apps/server/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "server",
3 | "version": "0.1.0",
4 | "description": "a server for stba",
5 | "main": "index.js",
6 | "license": "MIT",
7 | "scripts": {
8 | "dev": "nodemon --exec ts-node src/index.ts",
9 | "build": "tsc -b",
10 | "start": "node dist/index.js",
11 | "lint": "eslint . --max-warnings 0",
12 | "check-types": "tsc --noEmit"
13 | },
14 | "dependencies": {
15 | "@stba/db": "*",
16 | "@stba/types": "*",
17 | "@types/cookie-parser": "^1.4.8",
18 | "@types/cors": "^2.8.17",
19 | "@types/express": "^5.0.0",
20 | "@types/jsonwebtoken": "^9.0.9",
21 | "bcryptjs": "^3.0.2",
22 | "cookie-parser": "^1.4.7",
23 | "cors": "^2.8.5",
24 | "dotenv": "^16.4.7",
25 | "express": "^4.21.2",
26 | "jsonwebtoken": "^9.0.2",
27 | "nodemon": "^3.1.9",
28 | "ts-node": "^10.9.2"
29 | },
30 | "devDependencies": {
31 | "@stba/eslint-config": "*",
32 | "@stba/typescript-config": "*",
33 | "@types/node": "^22",
34 | "eslint": "^9.20.0",
35 | "typescript": "5.7.3"
36 | }
37 | }
--------------------------------------------------------------------------------
/06.blog-web/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "06.blog-web",
3 | "private": true,
4 | "scripts": {
5 | "build": "turbo run build",
6 | "dev": "turbo run dev",
7 | "db:migrate": "cd packages/db && yarn prisma migrate dev && cd ../..",
8 | "db:generate": "cd packages/db && yarn prisma generate && cd ../..",
9 | "db:seed": "cd packages/db && yarn prisma db seed && cd ../..",
10 | "db:show": "cd packages/db && yarn prisma studio && cd ../..",
11 | "lint": "turbo run lint",
12 | "format": "prettier --write \"**/*.{ts,tsx,md}\"",
13 | "check-types": "turbo run check-types"
14 | },
15 | "devDependencies": {
16 | "prettier": "^3.5.3",
17 | "turbo": "^2.5.0",
18 | "typescript": "5.8.2"
19 | },
20 | "lint-staged": {
21 | "*.{ts,tsx,js,jsx}": "eslint --fix",
22 | "*.{json,md,css,scss}": "prettier --write"
23 | },
24 | "engines": {
25 | "node": ">=18"
26 | },
27 | "packageManager": "yarn@1.22.22",
28 | "workspaces": [
29 | "apps/*",
30 | "packages/*"
31 | ],
32 | "dependencies": {
33 | "eslint": "^9.20.1",
34 | "lint-staged": "^15.4.3"
35 | }
36 | }
--------------------------------------------------------------------------------
/07.portfolio/public/dockSvg/mail-5-svgrepo-com.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/07.portfolio/src/components/elements/project/Project.tsx:
--------------------------------------------------------------------------------
1 | import Link from "next/link";
2 | import { ProjectProps } from "@/types/projectType";
3 |
4 | const Project = ({
5 | index,
6 | title,
7 | description,
8 | setModal,
9 | link,
10 | }: ProjectProps) => {
11 | return (
12 | setModal({ active: true, index })}
15 | onMouseLeave={() => setModal({ active: false, index })}
16 | >
17 |
18 |
19 |
20 | {title}
21 |
22 |
23 | {description}
24 |
25 |
26 |
27 |
28 | );
29 | };
30 |
31 | export default Project;
32 |
--------------------------------------------------------------------------------
/07.portfolio/src/stores/projectStore.ts:
--------------------------------------------------------------------------------
1 | import { project } from "@/types/projectType";
2 |
3 | export const projects: project[] = [
4 | {
5 | title: "alfa-leetcode-api",
6 | description: ` A custom LeetCode api to get User info, Problem, Contest & many more`,
7 | src: "/projects/alfa-leetcode-api.png",
8 | color: "#302F30",
9 | link: "https://github.com/alfaarghya/alfa-leetcode-api",
10 | },
11 | {
12 | title: "blog-web",
13 | description: "A simple blogging application to perform CURD operation",
14 | src: "/projects/blog-web.png",
15 | color: "#9CA3AF",
16 | link: "https://github.com/alfaarghya/blog-web",
17 | },
18 | {
19 | title: "ReadHub.md",
20 | description: "Generate your own GitHub Profile README.md easily ",
21 | src: "/projects/readhubmd.png",
22 | color: "#D6EAFF",
23 | link: "https://readhubmd.netlify.app/",
24 | },
25 | {
26 | title: "typing-test",
27 | description: "Improve your typing speed",
28 | src: "/projects/typing-test.png",
29 | color: "#808080",
30 | link: "https://alfa-typing-test.netlify.app/",
31 | },
32 | ];
33 |
--------------------------------------------------------------------------------
/06.blog-web/packages/db/prisma/schema.prisma:
--------------------------------------------------------------------------------
1 | generator client {
2 | provider = "prisma-client-js"
3 | output = "generated/prisma/client"
4 | }
5 |
6 | datasource db {
7 | provider = "postgresql"
8 | url = env("DATABASE_URL")
9 | }
10 |
11 | model User {
12 | id String @id @default(uuid())
13 | name String
14 | email String @unique
15 | username String @unique
16 | password String
17 | blogs Blog[]
18 | Comment Comment[]
19 | }
20 |
21 | model Blog {
22 | id String @id @default(uuid())
23 | authorId String
24 | title String
25 | content String
26 | createdAt DateTime @default(now())
27 | updatedAt DateTime @updatedAt
28 | author User @relation(fields: [authorId], references: [id])
29 | Comment Comment[]
30 | }
31 |
32 | model Comment {
33 | id String @id @default(uuid())
34 | comment String
35 | blogId String
36 | userId String
37 | blog Blog @relation(fields: [blogId], references: [id])
38 | user User @relation(fields: [userId], references: [id])
39 | createdAt DateTime @default(now())
40 | }
41 |
--------------------------------------------------------------------------------
/04.chat-app/apps/chatapp/src/app/layout.tsx:
--------------------------------------------------------------------------------
1 | import type { Metadata } from "next";
2 | import localFont from "next/font/local";
3 | import "./globals.css";
4 | import Navbar from "../components/navbar";
5 | import Footer from "../components/footer";
6 | import { Toaster } from "sonner";
7 |
8 | const geistSans = localFont({
9 | src: "./fonts/GeistVF.woff",
10 | variable: "--font-geist-sans",
11 | });
12 | const geistMono = localFont({
13 | src: "./fonts/GeistMonoVF.woff",
14 | variable: "--font-geist-mono",
15 | });
16 |
17 | export const metadata: Metadata = {
18 | title: "Chat App",
19 | description: "Generated by create next app",
20 | };
21 |
22 | export default function RootLayout({
23 | children,
24 | }: Readonly<{
25 | children: React.ReactNode;
26 | }>) {
27 | return (
28 |
29 |
30 |
31 |
32 | {children}
33 |
34 |
35 |
36 |
37 | );
38 | }
39 |
--------------------------------------------------------------------------------
/07.portfolio/public/dockSvg/cv-dock.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/types/src/server/validator/auth.validator.ts:
--------------------------------------------------------------------------------
1 | import { z } from "zod";
2 |
3 | //registration validator for students
4 | export const StudentRegisterSchema = z.object({
5 | name: z.string().nonempty("Name is required"),
6 | email: z.string().email("Email is required").nonempty("can't leave email empty"),
7 | password: z.string().min(8, "Password need at least 8 char long").nonempty("Password is required"),
8 | });
9 |
10 | //set password validator for teacher
11 | export const SetPasswordSchema = z.object({
12 | teacherId: z.string().uuid().nonempty("need teacher id"),
13 | email: z.string().email("Email is required").nonempty("can't leave email empty"),
14 | password: z.string().min(8, "Password need at least 8 char long").nonempty("Password is required"),
15 | });
16 |
17 | //login validator
18 | export const UserLoginSchema = z.object({
19 | email: z.string().email("Email is required").nonempty("can't leave email empty"),
20 | password: z.string().min(8, "Password need at least 8 char long").nonempty("Password is required"),
21 | role: z.enum(["STUDENT", "TEACHER", "ADMIN"])
22 | });
23 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/ui/src/Hero.tsx:
--------------------------------------------------------------------------------
1 | "use client";
2 |
3 | import { useRouter } from "next/navigation";
4 |
5 | const Hero = () => {
6 | const router = useRouter();
7 | const role = typeof window !== "undefined" ? localStorage.getItem("role") || "" : "";
8 |
9 | return (
10 |
11 |
12 |
Book Appointments Easily
13 |
14 | STBA is your all-in-one solution for scheduling and managing academic meetings between students and teachers.
15 |
16 |
17 | role === "" ? router.push("/login") : router.push("/dashboard")}
19 | className="bg-blue-600 hover:bg-blue-700 text-white px-8 py-3 rounded-lg text-lg shadow-md transition duration-300"
20 | >
21 | Get Started
22 |
23 |
24 | );
25 | };
26 |
27 | export default Hero;
--------------------------------------------------------------------------------
/04.chat-app/apps/chatapp/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "chat-app",
3 | "version": "0.1.0",
4 | "type": "module",
5 | "private": true,
6 | "scripts": {
7 | "dev": "next dev --turbopack --port 3000",
8 | "build": "next build",
9 | "start": "next start",
10 | "lint": "next lint --max-warnings 0",
11 | "check-types": "tsc --noEmit"
12 | },
13 | "dependencies": {
14 | "@chatApp/types": "*",
15 | "@hookform/resolvers": "^5.0.1",
16 | "@tailwindcss/postcss": "^4.0.6",
17 | "axios": "^1.8.4",
18 | "next": "^15.2.1",
19 | "postcss": "^8.5.2",
20 | "react": "^19.0.0",
21 | "react-dom": "^19.0.0",
22 | "react-hook-form": "^7.55.0",
23 | "react-markdown": "^10.1.0",
24 | "remixicon": "^4.6.0",
25 | "sonner": "^2.0.3",
26 | "tailwindcss": "^4.0.6",
27 | "zod": "^3.24.2"
28 | },
29 | "devDependencies": {
30 | "@chatApp/eslint-config": "*",
31 | "@chatApp/types": "*",
32 | "@chatApp/typescript-config": "*",
33 | "@types/node": "^22.13.9",
34 | "@types/react": "19.0.10",
35 | "@types/react-dom": "19.0.4",
36 | "eslint": "^9.22.0",
37 | "typescript": "5.8.2"
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/07.portfolio/src/components/ui/Skills.tsx:
--------------------------------------------------------------------------------
1 | import { backendSkills, frontendSkills, toolsSkill } from "@/stores/skillStore";
2 | import RevealAnimation from "../elements/skill/RevealAnimation";
3 | import CardType1 from "../elements/skill/cards/CardType1";
4 | import CardType2 from "../elements/skill/cards/CardType2";
5 |
6 | const Skills = () => {
7 | return (
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | );
27 | };
28 |
29 | export default Skills;
30 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "05.student-teacher-booking-appointment",
3 | "private": true,
4 | "scripts": {
5 | "build": "turbo run build",
6 | "dev": "turbo run dev",
7 | "db:migrate": "cd packages/db && yarn prisma migrate dev && cd ../..",
8 | "db:generate": "cd packages/db && yarn prisma generate && cd ../..",
9 | "db:seed": "cd packages/db && yarn prisma db seed && cd ../..",
10 | "db:show": "cd packages/db && yarn prisma studio && cd ../..",
11 | "lint": "turbo run lint",
12 | "format": "prettier --write \"**/*.{ts,tsx,md}\"",
13 | "check-types": "turbo run check-types"
14 | },
15 | "devDependencies": {
16 | "prettier": "^3.5.3",
17 | "turbo": "^2.4.4",
18 | "typescript": "5.8.2"
19 | },
20 | "lint-staged": {
21 | "*.{ts,tsx,js,jsx}": "eslint --fix",
22 | "*.{json,md,css,scss}": "prettier --write"
23 | },
24 | "engines": {
25 | "node": ">=18"
26 | },
27 | "packageManager": "yarn@1.22.22",
28 | "workspaces": [
29 | "apps/*",
30 | "packages/*"
31 | ],
32 | "dependencies": {
33 | "eslint": "^9.20.1",
34 | "lint-staged": "^15.4.3"
35 | }
36 | }
--------------------------------------------------------------------------------
/07.portfolio/public/svg/back-express.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/06.blog-web/apps/web/src/hooks/index.ts:
--------------------------------------------------------------------------------
1 | import { useEffect, useState } from "react";
2 | import { api } from "../utils/api";
3 | import { BlogType } from "@blog-web/types/client";
4 |
5 | //custom hook for retrieving all blogs
6 | export const useBlogs = () => {
7 | const [loading, setLoading] = useState(true);
8 | const [blogs, setBlogs] = useState([]);
9 |
10 | useEffect(() => {
11 | api
12 | .get(`/blog`)
13 | .then((response) => {
14 | setBlogs(response.data.blog);
15 | setLoading(false);
16 | })
17 | .catch((err) => { });
18 | }, []);
19 |
20 | return {
21 | loading,
22 | blogs,
23 | };
24 | };
25 |
26 | //custom hook for retrieving blog
27 | export const useBlog = ({ id }: { id: string }) => {
28 | const [loading, setLoading] = useState(true);
29 | const [blog, setBlog] = useState();
30 |
31 | useEffect(() => {
32 | api
33 | .get(`/blog/${id}`)
34 | .then((response) => {
35 | setBlog(response.data.blog);
36 | setLoading(false);
37 | })
38 | .catch((err) => { });
39 | }, [id]);
40 |
41 | return {
42 | loading,
43 | blog,
44 | };
45 | };
46 |
--------------------------------------------------------------------------------
/05.student-teacher-booking-appointment/packages/types/src/server/validator/student.request.validator.ts:
--------------------------------------------------------------------------------
1 | import z from "zod";
2 |
3 | //teacher search validator
4 | export const SearchTeacherSchema = z.object({
5 | name: z.string().optional(),
6 | department: z.string().optional(),
7 | subject: z.string().optional()
8 | });
9 |
10 | //student appointment book validator
11 | export const BookAppointmentSchema = z.object({
12 | studentId: z.string().uuid("id need to a uuid").nonempty("studentId is required"),
13 | teacherId: z.string().uuid("id need to a uuid").nonempty("teacherId is required"),
14 | date: z.string().datetime("Format: YYYY-MM-DDTHH:MM:SSZ").nonempty("date is required"),
15 | })
16 |
17 | //student appointment cancel validator
18 | export const CancelAppointmentSchema = z.object({
19 | studentId: z.string().uuid("id need to a uuid").nonempty("studentId is required"),
20 | appointmentId: z.string().uuid("id need to a uuid").nonempty("appointmentId is required"),
21 | });
22 |
23 | //get message schema
24 | export const GetMessageSchema = z.object({
25 | studentId: z.string().uuid("id need to a uuid").nonempty("studentId is required"),
26 | appointmentId: z.string().uuid("id need to a uuid").nonempty("appointmentId is required")
27 | })
--------------------------------------------------------------------------------
/04.chat-app/apps/server/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "server",
3 | "version": "0.1.0",
4 | "description": "a server for out chatApp",
5 | "main": "index.js",
6 | "license": "MIT",
7 | "scripts": {
8 | "dev": "nodemon --exec ts-node src/index.ts",
9 | "build": "tsc -b",
10 | "start": "node dist/index.js",
11 | "lint": "eslint . --max-warnings 0",
12 | "check-types": "tsc --noEmit"
13 | },
14 | "dependencies": {
15 | "@chatApp/db": "*",
16 | "@chatApp/types": "*",
17 | "@chatApp/utils": "*",
18 | "@types/cookie": "^1.0.0",
19 | "@types/cookie-parser": "^1.4.8",
20 | "@types/cors": "^2.8.17",
21 | "@types/express": "^5.0.0",
22 | "@types/jsonwebtoken": "^9.0.9",
23 | "@types/ws": "^8.18.0",
24 | "bcryptjs": "^3.0.2",
25 | "cookie": "^1.0.2",
26 | "cookie-parser": "^1.4.7",
27 | "cors": "^2.8.5",
28 | "dotenv": "^16.4.7",
29 | "express": "^4.21.2",
30 | "jsonwebtoken": "^9.0.2",
31 | "nodemon": "^3.1.9",
32 | "ts-node": "^10.9.2",
33 | "ws": "^8.18.1"
34 | },
35 | "devDependencies": {
36 | "@chatApp/eslint-config": "*",
37 | "@chatApp/typescript-config": "*",
38 | "@types/node": "^22",
39 | "eslint": "^9.20.0",
40 | "typescript": "5.7.3"
41 | }
42 | }
--------------------------------------------------------------------------------
/06.blog-web/apps/server/src/app.ts:
--------------------------------------------------------------------------------
1 | import express from "express";
2 | import cors from "cors";
3 | import cookieParser from "cookie-parser";
4 | import checkRoutes from "./middleware/checkRoutes";
5 | import authRoutes from "./routes/auth.route";
6 | import blogRoutes from "./routes/blog.route";
7 | import commentRoutes from "./routes/comment.route";
8 |
9 | const app = express();
10 |
11 | // Middleware
12 | const allowedOrigins = ["http://localhost:5173"];
13 | app.use(
14 | cors({
15 | origin: function (origin, callback) {
16 | // Allow requests with no origin (like Postman)
17 | if (!origin) return callback(null, true);
18 | if (allowedOrigins.includes(origin)) {
19 | return callback(null, true);
20 | }
21 | return callback(new Error("Not allowed by CORS"));
22 | },
23 | credentials: true,
24 | })
25 | );
26 | app.use(express.json());
27 | app.use(cookieParser()); //parse the cookies
28 | app.use(checkRoutes); // check all routes
29 |
30 | app.use("/api/auth", authRoutes);
31 | app.use("/api/blog", blogRoutes);
32 | app.use("/api/comment", commentRoutes);
33 |
34 | // Default Route
35 | app.get("/", (_req, res) => {
36 | res.status(200).json({ msg: "Hello from blog-web server" });
37 | });
38 |
39 |
40 | export default app;
41 |
--------------------------------------------------------------------------------