Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/serj2626/good-job-frontend
Проект "Поиск работы для программистов" на Nuxt
https://github.com/serj2626/good-job-frontend
fsd javascript nuxt nuxt3 nuxtui tailwind typescript vue vue3
Last synced: 27 days ago
JSON representation
Проект "Поиск работы для программистов" на Nuxt
- Host: GitHub
- URL: https://github.com/serj2626/good-job-frontend
- Owner: serj2626
- Created: 2024-11-14T10:13:27.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2024-12-09T22:54:11.000Z (2 months ago)
- Last Synced: 2024-12-09T23:18:55.787Z (2 months ago)
- Topics: fsd, javascript, nuxt, nuxt3, nuxtui, tailwind, typescript, vue, vue3
- Language: JavaScript
- Homepage:
- Size: 2.53 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[](https://nuxt.com/)
## Как развернуть проект
1. Используйте node `20.12.1`
2. Создайте .env в корне проекта, скопировав .env.example
3. Выполните чистую установку `npm ci`
4. Используйте языковую службу Vue Language Server (Volar)
5. Запустите dev server `npm run dev`# На проекте используется архитектурная методология [Feature-Sliced Design (FSD)](https://feature-sliced.design/)
## [FSD Telegram](https://t.me/feature_sliced)
## Схема слоев
- [`app`](./app) — настройки, стили и провайдеры для всего приложения.
- [`pages`](./src/pages) — композиционный слой для сборки полноценных страниц из сущностей, фич и виджетов.
- [`widgets`](./src/widgets) — композиционный слой для соединения сущностей и фич в самостоятельные блоки (например, IssuesList, UserProfile).
- [`features`](./src/features) — взаимодействия с пользователем, действия, которые несут бизнес-ценность для пользователя. (например, SendComment, AddToCart, UsersSearch)
- [`entities`](./src/entities) — бизнес-сущности. (например, User, Product, Order)
- [`shared`](./src/shared) — переиспользуемый код, не имеющий отношения к специфике приложения/бизнеса. (например, UIKit, libs, API)### App слой
Это единственный **FSD** слой, который будет лежать не в директории _/src_,
т.к. в **Nuxt 3** точка входа в приложение зарезервирована и должна находиться в корне проекта с названием **app**### Настройка роутинга _/pages_
Маршрутизация в **Nuxt 3** основывается на файловой системе в папке _/pages_. Именно поэтому для совместимости **Nuxt 3** и **FSD**,
слой **fsd-pages** помещен в директорию _/src/pages_, чтобы не было конфликтов имен.
В **nuxt-pages** необходимо импортировать **fsd-pages**.
**Делать импорты из других слоев запрещено.**### Layouts
Для лайоутов в **Nuxt 3** зарезервирована папка _/layouts_. В **FSD** лайоуты находятся в неопределенности - к какому слою они относятся **widgets**, **shared** или **app**?
Т.к. **Nuxt 3** имеет свое однозначное решение на данный вопрос, то лайоуты в данном проекте будут лежать в этой директории.
В лайоуты можно импортировать начиная от слоя **widgets**# [NuxtUI](https://ui.nuxt.com/)
На проекте используется библиотека для базовых компонентов NuxtUI
# [Tailwindcss](https://tailwindcss.com/)
На проекте используется библиотека для стилей Tailwindcss
# Nuxt 3 Minimal Starter
Look at the [Nuxt 3 documentation](https://nuxt.com/docs/getting-started/introduction) to learn more.
## Setup
Make sure to install the dependencies:
```bash
# npm
npm install# pnpm
pnpm install# yarn
yarn install# bun
bun install
```## Development Server
Start the development server on `http://localhost:3000`:
```bash
# npm
npm run dev# pnpm
pnpm run dev# yarn
yarn dev# bun
bun run dev
```## Production
Build the application for production:
```bash
# npm
npm run build# pnpm
pnpm run build# yarn
yarn build# bun
bun run build
```Locally preview production build:
```bash
# npm
npm run preview# pnpm
pnpm run preview# yarn
yarn preview# bun
bun run preview
```Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information.