Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
d0f6b18
Refactor: FormInput wrapped to forwardRef
BlackPoretsky Jan 11, 2025
617e650
Fix: update Dialog component to delete click outside handler and ref…
BlackPoretsky Jan 11, 2025
64dee81
Refactor: remove unused export from surreal index file
BlackPoretsky Jan 11, 2025
5906cf4
Refactor: implement NewFolderModal with improved state management and…
BlackPoretsky Jan 11, 2025
65f1582
Refactor: integrate NewFolderModal into Header component with modal h…
BlackPoretsky Jan 11, 2025
86d8783
Refactor: wrap IconButton and UnstyledButton components with forwardRef
BlackPoretsky Jan 12, 2025
f13b76b
Feat: add LanguageIcon and LoginIcon components with corresponding ex…
BlackPoretsky Jan 12, 2025
5c68cf4
Refactor: update ProfileButton to use TInternationalizationLocales fo…
BlackPoretsky Jan 12, 2025
bd2d363
Feat: add LanguageButton component with styles, types, and stories fo…
BlackPoretsky Jan 12, 2025
3896d30
Feat: integrate LanguageButton into Header component for language swi…
BlackPoretsky Jan 12, 2025
cfaa951
Feat: add SurrealQL queries for managing sets, tags, cards, folders, …
BlackPoretsky Jan 15, 2025
70155c8
Refactor: replace record schema references with RecordId instances in…
BlackPoretsky Jan 15, 2025
3065d1e
Improve: enhance database connection handling with authentication and…
BlackPoretsky Jan 17, 2025
31a2508
Refactor: rename initDb to dbConnect and enhance error handling in Su…
BlackPoretsky Jan 18, 2025
d4280f1
Feat: add getErrorStatus utility function for improved error handling
BlackPoretsky Jan 18, 2025
366eb7f
Refactor: implement session management API with authentication and re…
BlackPoretsky Jan 18, 2025
0876dda
Refactor: replace dbConnect event with dbConnectFx attachment for imp…
BlackPoretsky Jan 21, 2025
b6a519d
Refactor: replace initDb with dbConnectFx for improved database conne…
BlackPoretsky Jan 21, 2025
02cfab7
Refactor: enhance session management with retry logic for database au…
BlackPoretsky Jan 21, 2025
df689b8
Fix: overflow none
BlackPoretsky Mar 30, 2025
8e2104d
Refactor: update test scripts in package.json for improved clarity an…
BlackPoretsky Mar 30, 2025
db8812e
Refactor: correct import path for zIndex in global styles
BlackPoretsky Mar 30, 2025
db22b65
Chore: add configuration files for Docker and Vite, update routing an…
BlackPoretsky Apr 1, 2025
334e98a
Add: config for DevContainer
BlackPoretsky Apr 2, 2025
3d8e619
Update: update dependencies
BlackPoretsky Apr 2, 2025
f81980e
Add: add .gitattributes with "* text=auto"
BlackPoretsky Apr 2, 2025
c4e2665
Refactor: change paths
BlackPoretsky Apr 2, 2025
04796c3
Update: hmr Vite on Windows Subsystem for Linux (WSL) 2
BlackPoretsky Apr 2, 2025
ba56269
Update: updated devcontainer config
BlackPoretsky Apr 2, 2025
a8384f6
Update: switch to TypeScript Node devcontainer and streamline setup
BlackPoretsky Apr 2, 2025
7585f0d
feat(create-turbo): apply official-starter transform
turbobot-temp Apr 4, 2025
aa80f35
feat(create-turbo): apply pnpm-eslint transform
turbobot-temp Apr 4, 2025
6b762cb
feat(create-turbo): apply official-starter transform
turbobot-temp Apr 4, 2025
3cab18d
feat(create-turbo): apply pnpm-eslint transform
turbobot-temp Apr 4, 2025
67e3e38
feat(create-turbo): install dependencies
turbobot-temp Apr 4, 2025
264ef20
Created monorepo
BlackPoretsky Apr 5, 2025
c8f9def
chore: update pnpm workspace and turbo configuration
BlackPoretsky Apr 8, 2025
0ed2c0e
chore: update pnpm workspace configuration and dependencies
BlackPoretsky Apr 9, 2025
3a0e5f0
fix: update TPortalPropsWithContainerRef type to allow null for targe…
BlackPoretsky Apr 9, 2025
8b25d5d
Refactor icon prop types to use type aliases instead of interfaces fo…
BlackPoretsky Apr 9, 2025
6a8dd6f
feat(biome): add biome configuration and integrate with ESLint
BlackPoretsky Apr 12, 2025
7d5262a
feat(eslint): integrate jiti for dynamic ESLint configuration loading
BlackPoretsky Apr 12, 2025
7727244
feat(ui): add initial configuration files for ESLint and TypeScript
BlackPoretsky Apr 12, 2025
bb947e4
feat(pnpm): update pnpm-lock.yaml with new dependencies and versions
BlackPoretsky Apr 12, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
18 changes: 18 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
FROM mcr.microsoft.com/devcontainers/typescript-node:1-20-bookworm

# Установка зависимостей
RUN apt-get update && apt-get install -y curl

# Установка git
RUN apt-get install -y git

# Установка pnpm
ENV HOME=/home/node
ENV PNPM_HOME=$HOME/.local/share/pnpm
ENV PATH=$PNPM_HOME:$PATH

RUN npm install -g pnpm@10.7.0
RUN pnpm config set -g store-dir "${HOME}/.local/share/pnpm/store"
RUN chown -R node:node "$PNPM_HOME"

USER node
54 changes: 54 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
{
"name": "Flippo frontend DevContainer",

"build": {
"dockerfile": "Dockerfile"
},

"customizations": {
"vscode": {
"extensions": [
"formulahendry.auto-rename-tag",
"streetsidesoftware.code-spell-checker",
"vunguyentuan.vscode-css-variables",
"dsznajder.es7-react-js-snippets",
"dbaeumer.vscode-eslint",
"felipecaputo.git-project-manager",
"esbenp.prettier-vscode",
"streetsidesoftware.code-spell-checker-russian",
"sibiraj-s.vscode-scss-formatter",
"stylelint.vscode-stylelint",
"surrealdb.surrealql",
"simonsiefke.svg-preview",
"ionutvmi.path-autocomplete",
"christian-kohler.npm-intellisense",
"eamodio.gitlens",
"sidthesloth.html5-boilerplate",
"ecmel.vscode-html-css",
"lokalise.i18n-ally",
"ms-vscode.vscode-typescript-next",
"katsute.code-background",
"ms-azuretools.vscode-docker",
"mgmcdermott.vscode-language-babel"
]
}
},

"forwardPorts": ["3030:3030", "3031:3031", "80:80"],
"portsAttributes": {
"3030:3030": {
"label": "Frontend port",
"onAutoForward": "openBrowserOnce"
},
"3031:3031": {
"label": "SurrealDB port"
},
"80:80": {
"label": "Backend port"
}
},

"runArgs": ["--name", "flippo_devcontainer"],
"workspaceFolder": "/workspace/flippo"
//"updateContentCommand": "pnpm install --frozen-lockfile"
}
Binary file added .devcontainer/gorilla.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .devcontainer/idi_nahuy.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
52 changes: 40 additions & 12 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,39 @@
# Logs
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# Dependencies
node_modules
.pnp
.pnp.js
.pnpm-store

# Local env files
.env
.env.local
.env.development.local
.env.test.local
.env.production.local

# Testing
coverage
*storybook.log
testplane-report
.testplane

# Turbo
.turbo

# Vercel
.vercel

# Build Outputs
.next/
out/
build
dist
dist-ssr


# Debug
logs
*.log
npm-debug.log*
Expand All @@ -7,22 +42,15 @@ yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local
# Misc
.DS_Store
*.pem

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

*storybook.log
testplane-report
.testplane
*.sw?
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
20.14.0
63 changes: 63 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
{
"i18n-ally.localesPaths": [
"**/locales"
],

"eslint.enable": true,
"biome.enabled": false,

//"eslint.useFlatConfig": true,
//"eslint.useESLintClass": false, // важно!

// Disable the default formatter, use eslint instead
"prettier.enable": false,
"editor.formatOnSave": false,

// Auto fix
"editor.codeActionsOnSave": {
//"source.fixAll.biome": "explicit",
//"source.organizeImports.biome": "explicit",

"source.fixAll.eslint": "explicit",
"source.organizeImports": "never"
},

//"eslint.runtime": "node",

// Silent the stylistic rules in you IDE, but still auto fix them
"eslint.rules.customizations": [
{ "rule": "style/*", "severity": "info", "fixable": true },
{ "rule": "*-indent", "severity": "info", "fixable": true },
{ "rule": "*-spacing", "severity": "info", "fixable": true },
{ "rule": "*-spaces", "severity": "info", "fixable": true },
{ "rule": "*-order", "severity": "info", "fixable": true },
{ "rule": "*-dangle", "severity": "info", "fixable": true },
{ "rule": "*-newline", "severity": "info", "fixable": true },
{ "rule": "*quotes", "severity": "info", "fixable": true },
{ "rule": "*semi", "severity": "info", "fixable": true }
],

// Enable eslint for all supported languages
"eslint.validate": [
"javascript",
"javascriptreact",
"typescript",
"typescriptreact",
"vue",
"html",
"markdown",
"json",
"json5",
"jsonc",
"yaml",
"toml",
"xml"
],

"pair-diff.patterns": [
{
"source": "./fixtures/output/**/*.*",
"target": "./fixtures/input/<base>"
}
]
}
2 changes: 2 additions & 0 deletions backend/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
node_module
database
26 changes: 26 additions & 0 deletions backend/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# dependencies
/node_modules
/database/
/.pnp
.pnp.js
.yarn/install-state.gz
.env
/config

# production
/build

# misc
.DS_Store
*.pem

# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# local env files
.env*.local

# typescript
*.tsbuildinfo
19 changes: 19 additions & 0 deletions backend/.prettierrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"arrowParens": "always",
"bracketSameLine": false,
"bracketSpacing": true,
"embeddedLanguageFormatting": "auto",
"endOfLine": "lf",
"htmlWhitespaceSensitivity": "css",
"insertPragma": false,
"printWidth": 100,
"proseWrap": "preserve",
"quoteProps": "as-needed",
"requirePragma": false,
"semi": true,
"singleAttributePerLine": false,
"singleQuote": false,
"tabWidth": 2,
"trailingComma": "none",
"useTabs": false
}
26 changes: 26 additions & 0 deletions backend/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
FROM node:20 AS base

ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable

# backend-base
FROM base AS backend-base
WORKDIR /flippo/backend

COPY . .
RUN pnpm install --frozen-lockfile

# backend-dev
FROM backend-base AS backend-dev
CMD ["pnpm", "run", "dev:server"]

# backend-build
FROM backend-base AS backend-build
RUN pnpm run build

# backend-prod
FROM base AS backend-prod
COPY --from=backend-build /flippo/backend/build /app
WORKDIR /app
CMD ["node", "/app/app.js"]
File renamed without changes.
68 changes: 68 additions & 0 deletions backend/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# Flippo

## 1 О проекте

Проект направлен на создание удобного и функционального инструмента для обучения.
Реализация проекта позволит пользователям эффективно организовывать учебный процесс, улучшая свои знания и навыки.

**Цель проекта:** Создание веб-приложения для составления, хранения и использования обучающих карточек,
предназначенных для улучшения запоминания информации и подготовки к экзаменам, тестам и другим образовательным целям.

## 2 Целевая аудитория

- Ученики и студенты;
- Преподаватели и репетиторы;
- Люди, занимающиеся самообразованием;
- Специалисты, готовящиеся к профессиональным экзаменам и сертификациям.

## 3 Основные функции и возможности

1. Регистрация и авторизация пользователей:

- Регистрация через email;
- Вход через социальные сети (Google, VK, Yandex ID).

2. Профиль пользователя:

- Редактирование личных данных.

3. Создание и управление карточками:

- Создание карточек с вопросами и ответами;
- Возможность добавления изображений и ссылок;
- Организация карточек по папкам.

4. Обучение с помощью карточек:

- Режим изучения: отображение вопросов и скрытие ответов до нажатия;

5. Импорт и экспорт карточек:

- Импорт карточек из CSV;
- Экспорт созданных карточек;
- Копирование наборов или отдельных карточек по ссылке.

6. Сообщество и обмен:

- Возможность делиться коллекциями карточек с другими пользователями;
- Поиск и подписка на коллекции других пользователей;
- Возможность совместного редактирования набора карточек.

7. Дополнительные функции:

- Синхронизация данных между устройствами;
- Поддержка многоязычности.

## 4 Технические требования

1. Веб-технологии:

- Frontend: HTML5, SCSS, React, Effector, axios, storybook, atomic-router, i18next, motion/react(framer-motion);
- Backend: NodeJS, Express, jose, nodemailer;
- База данных: SurrealDB;
- Общие: TypeScript, Zod.

2. Безопасность:

- SSL-сертификат для безопасного соединения;
- JWT & Refresh token.
Loading
Loading