Repository navigation
Added skill and claude file #116
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
20 commits
Select commit
Hold shift + click to select a range
ab7834a
Added skill and claude file
maximgorbatyuk 43387e2
Phase 1
maximgorbatyuk 1aaf28b
Phase 2
maximgorbatyuk a8de841
Phase 3
maximgorbatyuk 2ba0820
Phase 4
maximgorbatyuk ff48633
Phase 5
maximgorbatyuk 555224a
Phase 6
maximgorbatyuk 3f5fb6b
Phase 7
maximgorbatyuk 3084e0f
Final step
maximgorbatyuk f75ac8c
adjustments
maximgorbatyuk d2894b8
Adjustments
maximgorbatyuk c8628f5
Adjustments
maximgorbatyuk d3a8b4b
navbar adjustments
maximgorbatyuk 7993d28
adjustments
maximgorbatyuk 1986687
Adjustments according to dark mode
maximgorbatyuk 905dc9d
profile adjusted
maximgorbatyuk 0e80739
+
maximgorbatyuk f16f800
+
maximgorbatyuk 8e33488
Prettier
maximgorbatyuk bc36fe9
+
maximgorbatyuk File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,42 @@ | ||
| --- | ||
| name: frontend-design | ||
| description: Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics. | ||
| license: Complete terms in LICENSE.txt | ||
| --- | ||
|
|
||
| This skill guides creation of distinctive, production-grade frontend interfaces that avoid generic "AI slop" aesthetics. Implement real working code with exceptional attention to aesthetic details and creative choices. | ||
|
|
||
| The user provides frontend requirements: a component, page, application, or interface to build. They may include context about the purpose, audience, or technical constraints. | ||
|
|
||
| ## Design Thinking | ||
|
|
||
| Before coding, understand the context and commit to a BOLD aesthetic direction: | ||
| - **Purpose**: What problem does this interface solve? Who uses it? | ||
| - **Tone**: Pick an extreme: brutally minimal, maximalist chaos, retro-futuristic, organic/natural, luxury/refined, playful/toy-like, editorial/magazine, brutalist/raw, art deco/geometric, soft/pastel, industrial/utilitarian, etc. There are so many flavors to choose from. Use these for inspiration but design one that is true to the aesthetic direction. | ||
| - **Constraints**: Technical requirements (framework, performance, accessibility). | ||
| - **Differentiation**: What makes this UNFORGETTABLE? What's the one thing someone will remember? | ||
|
|
||
| **CRITICAL**: Choose a clear conceptual direction and execute it with precision. Bold maximalism and refined minimalism both work - the key is intentionality, not intensity. | ||
|
|
||
| Then implement working code (HTML/CSS/JS, React, Vue, etc.) that is: | ||
| - Production-grade and functional | ||
| - Visually striking and memorable | ||
| - Cohesive with a clear aesthetic point-of-view | ||
| - Meticulously refined in every detail | ||
|
|
||
| ## Frontend Aesthetics Guidelines | ||
|
|
||
| Focus on: | ||
| - **Typography**: Choose fonts that are beautiful, unique, and interesting. Avoid generic fonts like Arial and Inter; opt instead for distinctive choices that elevate the frontend's aesthetics; unexpected, characterful font choices. Pair a distinctive display font with a refined body font. | ||
| - **Color & Theme**: Commit to a cohesive aesthetic. Use CSS variables for consistency. Dominant colors with sharp accents outperform timid, evenly-distributed palettes. | ||
| - **Motion**: Use animations for effects and micro-interactions. Prioritize CSS-only solutions for HTML. Use Motion library for React when available. Focus on high-impact moments: one well-orchestrated page load with staggered reveals (animation-delay) creates more delight than scattered micro-interactions. Use scroll-triggering and hover states that surprise. | ||
| - **Spatial Composition**: Unexpected layouts. Asymmetry. Overlap. Diagonal flow. Grid-breaking elements. Generous negative space OR controlled density. | ||
| - **Backgrounds & Visual Details**: Create atmosphere and depth rather than defaulting to solid colors. Add contextual effects and textures that match the overall aesthetic. Apply creative forms like gradient meshes, noise textures, geometric patterns, layered transparencies, dramatic shadows, decorative borders, custom cursors, and grain overlays. | ||
|
|
||
| NEVER use generic AI-generated aesthetics like overused font families (Inter, Roboto, Arial, system fonts), cliched color schemes (particularly purple gradients on white backgrounds), predictable layouts and component patterns, and cookie-cutter design that lacks context-specific character. | ||
|
|
||
| Interpret creatively and make unexpected choices that feel genuinely designed for the context. No design should be the same. Vary between light and dark themes, different fonts, different aesthetics. NEVER converge on common choices (Space Grotesk, for example) across generations. | ||
|
|
||
| **IMPORTANT**: Match implementation complexity to the aesthetic vision. Maximalist designs need elaborate code with extensive animations and effects. Minimalist or refined designs need restraint, precision, and careful attention to spacing, typography, and subtle details. Elegance comes from executing the vision well. | ||
|
|
||
| Remember: Claude is capable of extraordinary creative work. Don't hold back, show what can truly be created when thinking outside the box and committing fully to a distinctive vision. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,109 @@ | ||
| # CLAUDE.md | ||
|
|
||
| This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. | ||
|
|
||
| ## Project Overview | ||
|
|
||
| Angular 20 frontend for [techinterview.space](https://techinterview.space) - a platform for interview management, salary data analysis, and company reviews. Uses Server-Side Rendering (SSR) for SEO and social sharing. | ||
|
|
||
| ## Build & Test Commands | ||
|
|
||
| ```bash | ||
| npm install # Install dependencies | ||
| npm start # Dev server at http://localhost:4200 | ||
| npm run build # Production build with SSR | ||
| npm run serve:ssr:interviewer # Build + run SSR server at http://localhost:4000 | ||
| npm test # Run tests (uses ChromiumNoSandbox via Puppeteer) | ||
| npm run lint # ESLint | ||
| npm run pretty-all # Prettier on all files | ||
| npm run bundle:analyze # Webpack bundle analyzer | ||
| ``` | ||
|
|
||
| Docker: | ||
| ```bash | ||
| docker build -t techinterview-frontend . | ||
| docker run -p 8080:4000 techinterview-frontend | ||
| ``` | ||
|
|
||
| ## Architecture | ||
|
|
||
| ### Directory Structure | ||
| ``` | ||
| src/app/ | ||
| ├── components/ # Global components (navbar, admin-navbar, maintenance) | ||
| ├── models/ # TypeScript interfaces and enums | ||
| ├── modules/ # Feature modules (lazy-loaded) | ||
| │ ├── admin/ # Admin panel | ||
| │ ├── companies/ # Company reviews | ||
| │ ├── home/ # Landing, auth callbacks, about pages | ||
| │ ├── interviews/ # Interview templates and sessions | ||
| │ ├── salaries/ # Salary charts and surveys | ||
| │ └── users/ # User profiles | ||
| ├── services/ # API clients (exported via index.ts barrel) | ||
| └── shared/ # Reusable components, directives, guards, interceptors | ||
| ``` | ||
|
|
||
| ### Path Aliases (tsconfig.json) | ||
| - `@app/*` → `app/*` | ||
| - `@components/*` → `src/app/components/*` | ||
| - `@environments/*` → `src/environments/*` | ||
| - `@shared/*` → `src/app/shared/*` | ||
| - `@models/*` → `src/app/models/*` | ||
| - `@modules/*` → `src/app/modules/*` | ||
| - `@services/*` → `src/app/services/*` | ||
|
|
||
| ### SSR Configuration | ||
| Hybrid SSR/SPA approach configured in `src/app/app.routes.server.ts`: | ||
| - **SSR (RenderMode.Server)**: Home, companies, about pages - for SEO/meta tags | ||
| - **SPA (RenderMode.Client)**: Admin, salaries, interviews, auth callbacks - no SSR needed | ||
|
|
||
| Key SSR files: | ||
| - `src/server.ts` - Express.js SSR server | ||
| - `src/main.server.ts` - Server-side Angular bootstrap | ||
| - `src/app/app.module.server.ts` - Server-specific module with Auth0 mock | ||
| - `src/app/services/meta-tags.service.ts` - Dynamic meta tag management | ||
|
|
||
| ### HTTP Interceptors (order matters) | ||
| 1. `AuthInterceptor` - Adds Auth0 bearer token | ||
| 2. `SpinnerInterceptor` - Shows loading spinner | ||
| 3. `DateParserInterceptor` - Parses date strings from API | ||
|
|
||
| ### Guards | ||
| - `AuthGuard` - Requires authenticated user | ||
| - `AdminGuard` - Requires admin role | ||
| - `ActiveUserGuard` - Requires active (non-banned) user | ||
|
|
||
| ## Code Style | ||
|
|
||
| Follow `.eslintrc.js`: | ||
| - Component selectors: `app-kebab-case` | ||
| - Directive selectors: `appCamelCase` | ||
| - Unused variables: prefix with `_` | ||
|
|
||
| ## Testing | ||
|
|
||
| Jasmine/Karma with ChromiumNoSandbox (Puppeteer). Test files colocated with components (`*.spec.ts`). | ||
|
|
||
| Test utilities in `src/app/shared/test-utils/`. | ||
|
|
||
| ## Key Patterns | ||
|
|
||
| ### Services | ||
| All application services are registered in `src/app/services/index.ts` and provided in `AppModule`. | ||
|
|
||
| ### Shared Module | ||
| Reusable components, directives, and pipes are declared/exported in `src/app/shared/shared.module.ts`. | ||
|
|
||
| ### Environment Configuration | ||
| - `src/environments/environment.ts` - Development | ||
| - `src/environments/environment.prod.ts` - Production | ||
| - `src/environments/environment.staging.ts` - Staging | ||
|
|
||
| ## Dependencies | ||
|
|
||
| - Auth: Auth0 (`@auth0/auth0-angular`) | ||
| - UI: Bootstrap 5, Bootstrap Icons | ||
| - Charts: Chart.js, `@sgratzl/chartjs-chart-boxplot` | ||
| - Markdown: `ngx-markdown` with Prism.js syntax highlighting | ||
| - Analytics: `ngx-google-analytics` | ||
| - Forms: `@ng-select/ng-select` for dropdowns | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
Repository: Techinterview-space/frontend
Length of output: 200
🏁 Script executed:
Repository: Techinterview-space/frontend
Length of output: 1134
🏁 Script executed:
Repository: Techinterview-space/frontend
Length of output: 305
🏁 Script executed:
Repository: Techinterview-space/frontend
Length of output: 188
🏁 Script executed:
Repository: Techinterview-space/frontend
Length of output: 4897
🏁 Script executed:
Repository: Techinterview-space/frontend
Length of output: 202
🏁 Script executed:
Repository: Techinterview-space/frontend
Length of output: 911
Add a language to the directory tree fence.
Markdownlint (MD040) requires a language on fenced code blocks; the directory tree starting at line 31 is missing one. Add
textto the opening fence.🛠️ Suggested fix
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)
31-31: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents