Skip to content
@Team-Pint

Team-Pint

๐Ÿ“ธ PINT (ํ•€ํŠธ)

"๋‚ด ์ทจํ–ฅ์— ํ•€ํŠธ๊ฐ€ ๋”ฑ ๋งž๋Š” ์ถœ์‚ฌ์ง€ ๊ณต์œ ์†Œ" ์œ ์ €๋“ค์ด ์‚ฌ์ง„์˜ ๋ณธ์งˆ์—๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” Content-First ์‚ฌ์ง„ ๋ฐ ํ•„ํ„ฐ ์ •๋ณด ๊ณต์œ  ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.


๐Ÿ” Overview

**ํ•€ํŠธ(Pint)**๋Š” ์‚ฌ์ง„ ์ดฌ์˜ ์‹œ ํ”ผ์‚ฌ์ฒด๋ฅผ ์„ ๋ช…ํ•˜๊ฒŒ ๋งž์ถ”๋Š” ์ดˆ์ (Focus)์„ ์˜๋ฏธํ•˜๋Š” ์‚ฌ์ง„๊ณ„์˜ ์˜ค๋žœ ์€์–ด์—์„œ ์ฐฉ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” "์ด ์‚ฌ์ง„ ์–ด๋””์„œ ์ฐ์—ˆ์ง€?", "์–ด๋–ป๊ฒŒ ๋ณด์ •ํ–ˆ์ง€?"๋ผ๋Š” ์‚ฌ์šฉ์ž์˜ ๊ทผ๋ณธ์ ์ธ ๊ถ๊ธˆ์ฆ์„ ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

  • ์ฃผ์š” ํƒ€๊ฒŸ: ๊ฐ์„ฑ์ด ํ’๋ถ€ํ•œ ์ผ๋ฐ˜์ธ, ์‚ฌ์ง„์„ ๋” ๋‹ˆ์น˜(Niche)ํ•˜๊ฒŒ ์ฐ๊ณ  ์‹ถ์€ ์•„๋งˆ์ถ”์–ด, ์˜๊ฐ์„ ์–ป๊ณ  ์‹ถ์€ ์‚ฌ์ง„์ž‘๊ฐ€
  • ๋””์ž์ธ ์ฒ ํ•™: ๋ฏธ๋‹ˆ๋ฉ€๋ฆฌ์ฆ˜ ์ปจ์…‰์„ ๋ฐ”ํƒ•์œผ๋กœ ๋ชจ๋“  ์œ ์ €๊ฐ€ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ํ•œ ๋ฒˆ์— ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋Š” UX
  • ํ•ต์‹ฌ ๊ธฐ๋Šฅ: ์‚ฌ์ง„ ์† ์žฅ์†Œ ๋ฐ ํ•„ํ„ฐ ์ •๋ณด ๊ณต์œ , XMP ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ‘œ์ค€์„ ํ™œ์šฉํ•œ ์นด๋ฉ”๋ผ ์ •๋ณด ์ž๋™ ์ถ”์ถœ

๐Ÿ›  Tech Stack

Frontend

  • Core: React, TypeScript
  • Styling: Tailwind CSS
  • State Management: Zustand
  • Animation: GSAP
  • Networking: Axios

Backend

  • Core: Java Spring Boot
  • Security: Spring Security (Session & CSRF)
  • Database: PostgreSQL, JPA/Hibernate
  • Caching: Redis

Infrastructure & DevOps

  • Deployment: AWS EC2, Vercel
  • Storage: Amazon S3
  • CI/CD: GitHub Actions
  • Server: Nginx, Docker

โœจ Key Features & Technical Challenges

1. ์ด๋ฏธ์ง€ ๋กœ๋”ฉ ์„ฑ๋Šฅ ์ตœ์ ํ™” (Redis Caching)

  • ๋ฌธ์ œ ์ƒํ™ฉ: S3 Private ๋ฒ„ํ‚ท ๋ณด์•ˆ ์ •์ฑ…์ƒ ๋งค๋ฒˆ Pre-signed URL์„ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋„คํŠธ์›Œํฌ I/O ๊ณผ๋ถ€ํ•˜ ๋ฐœ์ƒ.
  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: ์ƒ์„ฑ๋œ Pre-signed URL์„ Redis์— ์บ์‹ฑ(TTL 55๋ถ„)ํ•˜์—ฌ ์œ ํšจ ์‹œ๊ฐ„ ๋™์•ˆ ์žฌ์‚ฌ์šฉํ•˜๋„๋ก ๊ตฌํ˜„.
  • ๊ฒฐ๊ณผ: ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก ์กฐํšŒ ์„ฑ๋Šฅ์ด ์•ฝ 6๋ฐฐ ํ–ฅ์ƒ(279ms โ†’ 41ms)๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

2. ๋ณด์•ˆ ๊ฐ•ํ™” (Session & CSRF)

  • JWT ๋Œ€์‹  ์„ธ์…˜์„ ์„ ํƒํ•œ ์ด์œ : ๋ชจ๋„๋ฆฌ์‹ ๊ตฌ์กฐ์—์„œ ์ƒํƒœ ์œ ์ง€๊ฐ€ ์šฉ์ดํ•˜๋ฉฐ, Refresh Token ๊ด€๋ฆฌ ์‹œ ๋ฐœ์ƒํ•˜๋Š” Stateless ์œ„๋ฐฐ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•จ.
  • CSRF ๋ฐฉ์–ด: Spring Security 6์˜ ๋งˆ์Šคํ‚น๋œ ํ† ํฐ ํ•ด์„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด CsrfTokenRequestAttributeHandler๋ฅผ ์ปค์Šคํ…€ ์„ค์ •ํ•˜์—ฌ SPA ํ™˜๊ฒฝ์—์„œ์˜ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.

3. ๋ฌดํ•œ ์Šคํฌ๋กค ํŽ˜์ด์ง€๋„ค์ด์…˜ (Intersection Observer)

  • ๊ตฌํ˜„: Intersection Observer API๋ฅผ ํ™œ์šฉํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ํ™”๋ฉด ํ•˜๋‹จ ๋„๋‹ฌ ์‹œ page ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ํŽ˜์นญํ•ฉ๋‹ˆ๋‹ค.
  • ์ตœ์ ํ™”: useCallback๊ณผ Set์„ ํ™œ์šฉํ•ด ๋ฐ์ดํ„ฐ ์ค‘๋ณต ๊ฒฐํ•ฉ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ๋ถˆํ•„์š”ํ•œ ๋ฆฌ๋ Œ๋”๋ง์„ ์ตœ์†Œํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.

4. ๋งˆ์ดํฌ๋กœ ์ธํ„ฐ๋ž™์…˜ ๋ฐ UX

  • ๋กœ๊ทธ์ธ ์• ๋‹ˆ๋ฉ”์ด์…˜: CSS Keyframes๋ฅผ ์ด์šฉํ•ด ์‚ฌ์ง„๋“ค์ด ๋Š์ž„์—†์ด ํ๋ฅด๋Š” ๋ฌดํ•œ ๋ฃจํ”„ ์Šคํฌ๋กค ๊ตฌํ˜„.
  • ๋‚™๊ด€์  ์—…๋ฐ์ดํŠธ: ์ข‹์•„์š”(Like) ํด๋ฆญ ์‹œ ์„œ๋ฒ„ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  UI๋ฅผ ์ฆ‰๊ฐ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ฒด๊ฐ ์†๋„๋ฅผ ๋†’์˜€์Šต๋‹ˆ๋‹ค.

๋ฐฐํฌ URL

Vercel


Presentation

Canva ๋ฐœํ‘œ์ž๋ฃŒ


Demo

์‹œ์—ฐ์˜์ƒ


๐Ÿ‘ฅ Contributors



Copyright ยฉ 2026 Team PINT. All rights reserved.

Popular repositories Loading

  1. Pint-Backend Pint-Backend Public

    Java 1

  2. Pint-Frontend Pint-Frontend Public

    Pint Frontend ๋ ˆํฌ์ง€ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค

    TypeScript

  3. .github .github Public

Repositories

Showing 3 of 3 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loadingโ€ฆ

Most used topics

Loadingโ€ฆ