diff --git a/makefile b/makefile
index b93afc6..fd636f5 100644
--- a/makefile
+++ b/makefile
@@ -1,6 +1,6 @@
VENV=source ./.venv/bin/activate;
ALEMBIC=alembic -c ./server/backend/database/alembic/alembic.ini
-.PHONY: run run_debug migrate_head migrate_down migrate_history migrate_current migrate
+.PHONY: run run_debug migrate_head migrate_down migrate_history migrate_current migrate_heads migrate_stamp migrate
run:
$(VENV) python run.py --user_name admin
run_debug:
@@ -13,5 +13,9 @@ migrate_history:
$(VENV) $(ALEMBIC) history
migrate_current:
$(VENV) $(ALEMBIC) current
+migrate_heads:
+ $(VENV) $(ALEMBIC) heads
+migrate_stamp:
+ $(VENV) $(ALEMBIC) stamp head
migrate:
$(VENV) $(ALEMBIC) revision --autogenerate
\ No newline at end of file
diff --git a/run.py b/run.py
index a206b50..5b16ec5 100644
--- a/run.py
+++ b/run.py
@@ -8,6 +8,7 @@ async def init_admin(user_name: str):
admin_user = {
"code": "123456",
"name": user_name,
+ "middlename": user_name,
"surname": user_name,
"admin": True
}
diff --git a/server/backend/database/alembic/alembic/versions/15b87c1584bf_.py b/server/backend/database/alembic/alembic/versions/15b87c1584bf_.py
new file mode 100644
index 0000000..eeb7d86
--- /dev/null
+++ b/server/backend/database/alembic/alembic/versions/15b87c1584bf_.py
@@ -0,0 +1,32 @@
+"""empty message
+
+Revision ID: 15b87c1584bf
+Revises: 2e39b25a3b28
+Create Date: 2026-03-13 22:53:40.498042
+
+"""
+from typing import Sequence, Union
+
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision: str = '15b87c1584bf'
+down_revision: Union[str, Sequence[str], None] = 'dd476c0dcf61'
+branch_labels: Union[str, Sequence[str], None] = None
+depends_on: Union[str, Sequence[str], None] = None
+
+
+def upgrade() -> None:
+ """Upgrade schema."""
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.drop_column('users', 'food')
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ """Downgrade schema."""
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.add_column('users', sa.Column('food', sa.BOOLEAN(), nullable=True))
+ # ### end Alembic commands ###
diff --git a/server/backend/database/alembic/alembic/versions/1fa13c2c4df4_.py b/server/backend/database/alembic/alembic/versions/1fa13c2c4df4_.py
new file mode 100644
index 0000000..9f03e88
--- /dev/null
+++ b/server/backend/database/alembic/alembic/versions/1fa13c2c4df4_.py
@@ -0,0 +1,32 @@
+"""empty message
+
+Revision ID: 1fa13c2c4df4
+Revises: 15b87c1584bf
+Create Date: 2026-03-13 22:56:36.115487
+
+"""
+from typing import Sequence, Union
+
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision: str = '1fa13c2c4df4'
+down_revision: Union[str, Sequence[str], None] = '15b87c1584bf'
+branch_labels: Union[str, Sequence[str], None] = None
+depends_on: Union[str, Sequence[str], None] = None
+
+
+def upgrade() -> None:
+ """Upgrade schema."""
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.add_column('users', sa.Column('type_of_food', sa.String(), nullable=True))
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ """Downgrade schema."""
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.drop_column('users', 'type_of_food')
+ # ### end Alembic commands ###
diff --git a/server/backend/database/alembic/alembic/versions/55f24e794643_.py b/server/backend/database/alembic/alembic/versions/55f24e794643_.py
new file mode 100644
index 0000000..9bef888
--- /dev/null
+++ b/server/backend/database/alembic/alembic/versions/55f24e794643_.py
@@ -0,0 +1,32 @@
+"""empty message
+
+Revision ID: 55f24e794643
+Revises: 1fa13c2c4df4
+Create Date: 2026-03-13 23:03:47.236864
+
+"""
+from typing import Sequence, Union
+
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision: str = '55f24e794643'
+down_revision: Union[str, Sequence[str], None] = '1fa13c2c4df4'
+branch_labels: Union[str, Sequence[str], None] = None
+depends_on: Union[str, Sequence[str], None] = None
+
+
+def upgrade() -> None:
+ """Upgrade schema."""
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.add_column('users', sa.Column('middlename', sa.String(), nullable=True))
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ """Downgrade schema."""
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.drop_column('users', 'middlename')
+ # ### end Alembic commands ###
diff --git a/server/backend/database/alembic/alembic/versions/dd476c0dcf61_.py b/server/backend/database/alembic/alembic/versions/dd476c0dcf61_.py
new file mode 100644
index 0000000..fc899e8
--- /dev/null
+++ b/server/backend/database/alembic/alembic/versions/dd476c0dcf61_.py
@@ -0,0 +1,32 @@
+"""empty message
+
+Revision ID: dd476c0dcf61
+Revises: 1e2bd98e74a5
+Create Date: 2026-03-13 22:38:32.065614
+
+"""
+from typing import Sequence, Union
+
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision: str = 'dd476c0dcf61'
+down_revision: Union[str, Sequence[str], None] = '1e2bd98e74a5'
+branch_labels: Union[str, Sequence[str], None] = None
+depends_on: Union[str, Sequence[str], None] = None
+
+
+def upgrade() -> None:
+ """Upgrade schema."""
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.drop_column('users', 'alco')
+ # ### end Alembic commands ###
+
+
+def downgrade() -> None:
+ """Downgrade schema."""
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.add_column('users', sa.Column('alco', sa.BOOLEAN(), nullable=True))
+ # ### end Alembic commands ###
diff --git a/server/backend/database/db.py b/server/backend/database/db.py
index f67f4dc..a784c24 100644
--- a/server/backend/database/db.py
+++ b/server/backend/database/db.py
@@ -23,11 +23,11 @@ class User(Base):
code = Column(String, unique=True, nullable=True)
name = Column(String, nullable=True)
+ middlename=Column(String, nullable=True)
surname = Column(String, nullable=True)
text_field = Column(String, nullable=True)
- food = Column(Boolean)
- alco = Column(Boolean)
- types_of_alco = Column(String, default="Nothing")
+ type_of_food = Column(String, nullable=True)
+ types_of_alco = Column(String, default="Nothing", nullable=True)
activated = Column(Boolean)
created_at = Column(DateTime(timezone=True), server_default=func.now())
diff --git a/server/backend/schema/pydantic.py b/server/backend/schema/pydantic.py
index ef02553..8cfdc5e 100644
--- a/server/backend/schema/pydantic.py
+++ b/server/backend/schema/pydantic.py
@@ -2,6 +2,7 @@ from pydantic import BaseModel, Field, field_validator
from pydantic_settings import BaseSettings, SettingsConfigDict
from pydantic.types import StringConstraints
from typing_extensions import Annotated
+from typing import Optional
import re
NameStr = Annotated[
@@ -23,16 +24,18 @@ class UserOut(BaseModel):
name: NameStr = Field(..., description="Name of the guest")
surname: NameStr = Field(..., description="Surname of the guest")
-class UserUpdate(UserAccess):
- name: NameStr = Field(..., description="Name of the guest")
- surname: NameStr = Field(..., description="Surname of the guest")
- text_field: str = Field("", max_length=500, description="what the guest wants")
- activated: bool = Field(False, description="activation of the guest")
- food: bool = Field(False, description="Options meat or fish")
- alco: bool = Field(False, description="if the guest will drink alco or not")
- types_of_alco: str = Field("", description="types of alco")
+class UserUpdate(BaseModel):
+ code: Optional[str] = Field(None, min_length=6, max_length=6, description="Code of the guest")
+ name: Optional[NameStr] = Field(None, description="Name of the guest")
+ middlename: Optional[NameStr] = Field(None, description="Middlename of the guest")
+ surname: Optional[NameStr] = Field(None, description="Surname of the guest")
+ text_field: Optional[str] = Field(None, max_length=500, description="what the guest wants")
+ activated: Optional[bool] = Field(None, description="activation of the guest")
+ type_of_food: Optional[str] = Field(None, description="meat or fish")
+ types_of_alco: Optional[str] = Field(None, description="types of alco")
class UserCreate(UserUpdate):
+ code: str = Field(..., min_length=6, max_length=6, description="Code of the guest")
admin:bool = Field(False, description="Admin privilegies")
class Settings(BaseSettings):
DIR:str
diff --git a/server/frontend/auth/login.css b/server/frontend/auth/login.css
new file mode 100644
index 0000000..e69de29
diff --git a/server/frontend/auth/login.html b/server/frontend/auth/login.html
new file mode 100644
index 0000000..33bdf92
--- /dev/null
+++ b/server/frontend/auth/login.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+ Login
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/server/frontend/auth/login.js b/server/frontend/auth/login.js
new file mode 100644
index 0000000..b16f236
--- /dev/null
+++ b/server/frontend/auth/login.js
@@ -0,0 +1,74 @@
+function getToken() {
+ return localStorage.getItem("token") || sessionStorage.getItem("token");
+}
+function tokenCheck(){
+ const token = getToken();
+ if (token) {
+ window.location.href = "http://localhost:5500/server/frontend/main/index.html";
+ }
+}
+document.getElementById('loginForm').addEventListener('submit', async function (e) {
+ e.preventDefault();
+ const password = document.getElementById('password').value;
+ const userData = {
+ password
+ };
+ try {
+ const response = await fetch("http://localhost:8000/api/auth", {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/x-www-form-urlencoded",
+ },
+ body: new URLSearchParams({
+ password: userData.password
+ }),
+ });
+
+ const data = await response.json(); // читаем только один раз
+ if (response.ok) { // сохраняем только при успехе
+ // в sessionstorage до перезахода в браузер(
+ sessionStorage.setItem("token", data.access_token);
+
+ window.location.href = 'http://localhost:5500/server/frontend/main/index.html';
+ } else { //парсинг и вывод ошибок, если есть
+ if (Array.isArray(data.detail)) {
+ const messages = data.detail.map(e => {
+ const field = e.loc.filter(locPart => locPart !== 'body').join(' -> ');
+ return `${field}: ${e.msg}`;
+ });
+ showError(messages);
+ } else if (typeof data.detail === 'string') {
+ showError([data.detail]);
+ } else {
+ showError(['Unknown error']);
+ }
+ }
+ } catch (err) {
+ showError(['Connection error: ' + err.message]);
+ }
+});
+function showError(messages){ //Добавление их на form со стилями
+ let errorElem = document.getElementById('formError');
+ let container = document.getElementById('glass-container');
+ if (!errorElem){
+ errorElem = document.createElement('div');
+ errorElem.style.transition="3s";
+ errorElem.id = 'formError';
+ errorElem.style.color = 'red';
+ errorElem.style.marginTop = '20px';
+ errorElem.style.fontSize = '14px';
+ errorElem.style.fontWeight = '100';
+ errorElem.style.marginBottom = '20px';
+ errorElem.style.lineHeight="120%";
+ errorElem.style.height = 'auto';
+ const form = document.getElementById('loginForm');
+ form.insertAdjacentElement('afterend', errorElem);
+ };
+ errorElem.innerHTML = '';
+ messages.forEach(msg => {
+ const li = document.createElement('li');
+ li.style.listStyleType="none";
+ li.textContent = msg;
+ errorElem.appendChild(li);
+ });
+}
\ No newline at end of file
diff --git a/server/frontend/main/api.js b/server/frontend/main/api.js
new file mode 100644
index 0000000..52e2bf3
--- /dev/null
+++ b/server/frontend/main/api.js
@@ -0,0 +1,69 @@
+function getToken() {
+ return localStorage.getItem("token") || sessionStorage.getItem("token");
+}
+function tokenCheck(){
+ const token = getToken();
+ if (!token) {
+ window.location.href = "http://localhost:5500/server/frontend/auth/login.html";
+ }
+}
+
+tokenCheck()
+document.getElementById('logoutForm').addEventListener('submit', async function (e) {
+ e.preventDefault();
+ localStorage.removeItem("token");
+ sessionStorage.removeItem("token");
+ tokenCheck();
+});
+
+document.addEventListener("DOMContentLoaded", () => {
+ const form = document.querySelector(".form-info");
+
+ form.addEventListener("submit", async (e) => {
+ e.preventDefault();
+ // try {
+ // собираем данные из формы
+ const name = document.getElementById('ffname').value || "";
+ const middlename = document.getElementById('fmname').value || "";
+ const surname = document.getElementById('flname').value || "";
+ const text_field = document.getElementById('text_field')?.value || "";
+ const food = document.querySelector('input[name="food"]:checked')?.value || "";
+ const types_of_alco = Array.from(document.querySelectorAll('input[name="drink"]:checked'))
+ .map(el => el.value)
+ .join(', ');
+
+ const guestData = {
+ name: name,
+ middlename: middlename,
+ surname: surname,
+ text_field: text_field,
+ activated: true,
+ types_of_food: food,
+ types_of_alco: types_of_alco
+ };
+ console.log(guestData)
+
+ // отправка на /api/update с Authorization
+ // const updateResponse = await fetch('/api/update', {
+ // method: 'POST',
+ // headers: {
+ // 'Content-Type': 'application/json',
+ // 'Authorization': `Bearer ${token}`
+ // },
+ // body: JSON.stringify(guestData)
+ // });
+
+ // if (!updateResponse.ok) {
+ // throw new Error('Ошибка при отправке формы');
+ // }
+
+ // const updateData = await updateResponse.json();
+ // console.log('Форма успешно отправлена:', updateData);
+
+ // } catch (err) {
+ // console.error(err);
+ // alert('Ошибка: ' + err.message);
+ // }
+ });
+});
+
diff --git a/server/frontend/fonts/MurreyC/COPYRIGHT.txt b/server/frontend/main/fonts/MurreyC/COPYRIGHT.txt
similarity index 100%
rename from server/frontend/fonts/MurreyC/COPYRIGHT.txt
rename to server/frontend/main/fonts/MurreyC/COPYRIGHT.txt
diff --git a/server/frontend/fonts/MurreyC/murreyc.eot b/server/frontend/main/fonts/MurreyC/murreyc.eot
similarity index 100%
rename from server/frontend/fonts/MurreyC/murreyc.eot
rename to server/frontend/main/fonts/MurreyC/murreyc.eot
diff --git a/server/frontend/fonts/MurreyC/murreyc.ttf b/server/frontend/main/fonts/MurreyC/murreyc.ttf
similarity index 100%
rename from server/frontend/fonts/MurreyC/murreyc.ttf
rename to server/frontend/main/fonts/MurreyC/murreyc.ttf
diff --git a/server/frontend/fonts/MurreyC/murreyc.woff b/server/frontend/main/fonts/MurreyC/murreyc.woff
similarity index 100%
rename from server/frontend/fonts/MurreyC/murreyc.woff
rename to server/frontend/main/fonts/MurreyC/murreyc.woff
diff --git a/server/frontend/fonts/MurreyC/murreyc.woff2 b/server/frontend/main/fonts/MurreyC/murreyc.woff2
similarity index 100%
rename from server/frontend/fonts/MurreyC/murreyc.woff2
rename to server/frontend/main/fonts/MurreyC/murreyc.woff2
diff --git a/server/frontend/images/1.jpg b/server/frontend/main/images/1.jpg
similarity index 100%
rename from server/frontend/images/1.jpg
rename to server/frontend/main/images/1.jpg
diff --git a/server/frontend/images/234.png b/server/frontend/main/images/234.png
similarity index 100%
rename from server/frontend/images/234.png
rename to server/frontend/main/images/234.png
diff --git a/server/frontend/images/236595.png b/server/frontend/main/images/236595.png
similarity index 100%
rename from server/frontend/images/236595.png
rename to server/frontend/main/images/236595.png
diff --git a/server/frontend/images/25.png b/server/frontend/main/images/25.png
similarity index 100%
rename from server/frontend/images/25.png
rename to server/frontend/main/images/25.png
diff --git a/server/frontend/images/360_F_782055879_otsYbwETI2WfPTGAdbLfuXdUjHB8bwBU.jpg b/server/frontend/main/images/360_F_782055879_otsYbwETI2WfPTGAdbLfuXdUjHB8bwBU.jpg
similarity index 100%
rename from server/frontend/images/360_F_782055879_otsYbwETI2WfPTGAdbLfuXdUjHB8bwBU.jpg
rename to server/frontend/main/images/360_F_782055879_otsYbwETI2WfPTGAdbLfuXdUjHB8bwBU.jpg
diff --git a/server/frontend/images/55555.jpg b/server/frontend/main/images/55555.jpg
similarity index 100%
rename from server/frontend/images/55555.jpg
rename to server/frontend/main/images/55555.jpg
diff --git a/server/frontend/images/56532 (2).png b/server/frontend/main/images/56532 (2).png
similarity index 100%
rename from server/frontend/images/56532 (2).png
rename to server/frontend/main/images/56532 (2).png
diff --git a/server/frontend/images/565656565.jpg b/server/frontend/main/images/565656565.jpg
similarity index 100%
rename from server/frontend/images/565656565.jpg
rename to server/frontend/main/images/565656565.jpg
diff --git a/server/frontend/images/Brown_Simple_Happy_Wedding_Photo_Collage.png b/server/frontend/main/images/Brown_Simple_Happy_Wedding_Photo_Collage.png
similarity index 100%
rename from server/frontend/images/Brown_Simple_Happy_Wedding_Photo_Collage.png
rename to server/frontend/main/images/Brown_Simple_Happy_Wedding_Photo_Collage.png
diff --git a/server/frontend/images/ChatGPT Image 5 янв. 2026 г., 15_49_39.png b/server/frontend/main/images/ChatGPT Image 5 янв. 2026 г., 15_49_39.png
similarity index 100%
rename from server/frontend/images/ChatGPT Image 5 янв. 2026 г., 15_49_39.png
rename to server/frontend/main/images/ChatGPT Image 5 янв. 2026 г., 15_49_39.png
diff --git a/server/frontend/images/ChatGPT Image 5 янв. 2026 г., 17_27_11.png b/server/frontend/main/images/ChatGPT Image 5 янв. 2026 г., 17_27_11.png
similarity index 100%
rename from server/frontend/images/ChatGPT Image 5 янв. 2026 г., 17_27_11.png
rename to server/frontend/main/images/ChatGPT Image 5 янв. 2026 г., 17_27_11.png
diff --git a/server/frontend/images/Dreamy Outdoor Wedding Under a Canopy of Lights .jpg b/server/frontend/main/images/Dreamy Outdoor Wedding Under a Canopy of Lights .jpg
similarity index 100%
rename from server/frontend/images/Dreamy Outdoor Wedding Under a Canopy of Lights .jpg
rename to server/frontend/main/images/Dreamy Outdoor Wedding Under a Canopy of Lights .jpg
diff --git a/server/frontend/images/backgraund_mai копия22.jpg b/server/frontend/main/images/backgraund_mai копия22.jpg
similarity index 100%
rename from server/frontend/images/backgraund_mai копия22.jpg
rename to server/frontend/main/images/backgraund_mai копия22.jpg
diff --git a/server/frontend/images/backgraund_main.jpg b/server/frontend/main/images/backgraund_main.jpg
similarity index 100%
rename from server/frontend/images/backgraund_main.jpg
rename to server/frontend/main/images/backgraund_main.jpg
diff --git a/server/frontend/images/bc6.jpg b/server/frontend/main/images/bc6.jpg
similarity index 100%
rename from server/frontend/images/bc6.jpg
rename to server/frontend/main/images/bc6.jpg
diff --git a/server/frontend/images/bg.jpg b/server/frontend/main/images/bg.jpg
similarity index 100%
rename from server/frontend/images/bg.jpg
rename to server/frontend/main/images/bg.jpg
diff --git a/server/frontend/images/bg1.jpg b/server/frontend/main/images/bg1.jpg
similarity index 100%
rename from server/frontend/images/bg1.jpg
rename to server/frontend/main/images/bg1.jpg
diff --git a/server/frontend/images/bg2.jpg b/server/frontend/main/images/bg2.jpg
similarity index 100%
rename from server/frontend/images/bg2.jpg
rename to server/frontend/main/images/bg2.jpg
diff --git a/server/frontend/images/icon.png b/server/frontend/main/images/icon.png
similarity index 100%
rename from server/frontend/images/icon.png
rename to server/frontend/main/images/icon.png
diff --git a/server/frontend/images/people/IMG_20260107_135956_402.jpg b/server/frontend/main/images/people/IMG_20260107_135956_402.jpg
similarity index 100%
rename from server/frontend/images/people/IMG_20260107_135956_402.jpg
rename to server/frontend/main/images/people/IMG_20260107_135956_402.jpg
diff --git a/server/frontend/images/people/IMG_20260107_140110_500.jpg b/server/frontend/main/images/people/IMG_20260107_140110_500.jpg
similarity index 100%
rename from server/frontend/images/people/IMG_20260107_140110_500.jpg
rename to server/frontend/main/images/people/IMG_20260107_140110_500.jpg
diff --git a/server/frontend/images/people/IMG_20260107_140120_301.jpg b/server/frontend/main/images/people/IMG_20260107_140120_301.jpg
similarity index 100%
rename from server/frontend/images/people/IMG_20260107_140120_301.jpg
rename to server/frontend/main/images/people/IMG_20260107_140120_301.jpg
diff --git a/server/frontend/images/photos/IMG_20260223_151005_128.jpg b/server/frontend/main/images/photos/IMG_20260223_151005_128.jpg
similarity index 100%
rename from server/frontend/images/photos/IMG_20260223_151005_128.jpg
rename to server/frontend/main/images/photos/IMG_20260223_151005_128.jpg
diff --git a/server/frontend/images/photos/IMG_20260223_151049_713.jpg b/server/frontend/main/images/photos/IMG_20260223_151049_713.jpg
similarity index 100%
rename from server/frontend/images/photos/IMG_20260223_151049_713.jpg
rename to server/frontend/main/images/photos/IMG_20260223_151049_713.jpg
diff --git a/server/frontend/images/telegram-svgrepo-com.svg b/server/frontend/main/images/telegram-svgrepo-com.svg
similarity index 100%
rename from server/frontend/images/telegram-svgrepo-com.svg
rename to server/frontend/main/images/telegram-svgrepo-com.svg
diff --git a/server/frontend/images/time/1.jpg b/server/frontend/main/images/time/1.jpg
similarity index 100%
rename from server/frontend/images/time/1.jpg
rename to server/frontend/main/images/time/1.jpg
diff --git a/server/frontend/images/time/2.jpg b/server/frontend/main/images/time/2.jpg
similarity index 100%
rename from server/frontend/images/time/2.jpg
rename to server/frontend/main/images/time/2.jpg
diff --git a/server/frontend/images/time/3.jpg b/server/frontend/main/images/time/3.jpg
similarity index 100%
rename from server/frontend/images/time/3.jpg
rename to server/frontend/main/images/time/3.jpg
diff --git a/server/frontend/images/time/ChatGPT Image 19 янв. 2026 г., 20_18_11.png b/server/frontend/main/images/time/ChatGPT Image 19 янв. 2026 г., 20_18_11.png
similarity index 100%
rename from server/frontend/images/time/ChatGPT Image 19 янв. 2026 г., 20_18_11.png
rename to server/frontend/main/images/time/ChatGPT Image 19 янв. 2026 г., 20_18_11.png
diff --git a/server/frontend/images/time/beverage_4137183.png b/server/frontend/main/images/time/beverage_4137183.png
similarity index 100%
rename from server/frontend/images/time/beverage_4137183.png
rename to server/frontend/main/images/time/beverage_4137183.png
diff --git a/server/frontend/images/time/cake.png b/server/frontend/main/images/time/cake.png
similarity index 100%
rename from server/frontend/images/time/cake.png
rename to server/frontend/main/images/time/cake.png
diff --git a/server/frontend/images/time/camera.png b/server/frontend/main/images/time/camera.png
similarity index 100%
rename from server/frontend/images/time/camera.png
rename to server/frontend/main/images/time/camera.png
diff --git a/server/frontend/images/time/disco-ball_1034052.png b/server/frontend/main/images/time/disco-ball_1034052.png
similarity index 100%
rename from server/frontend/images/time/disco-ball_1034052.png
rename to server/frontend/main/images/time/disco-ball_1034052.png
diff --git a/server/frontend/images/time/disco-ball_18181959.png b/server/frontend/main/images/time/disco-ball_18181959.png
similarity index 100%
rename from server/frontend/images/time/disco-ball_18181959.png
rename to server/frontend/main/images/time/disco-ball_18181959.png
diff --git a/server/frontend/images/time/food.png b/server/frontend/main/images/time/food.png
similarity index 100%
rename from server/frontend/images/time/food.png
rename to server/frontend/main/images/time/food.png
diff --git a/server/frontend/images/time/free-icon-fireworks-7201451.png b/server/frontend/main/images/time/free-icon-fireworks-7201451.png
similarity index 100%
rename from server/frontend/images/time/free-icon-fireworks-7201451.png
rename to server/frontend/main/images/time/free-icon-fireworks-7201451.png
diff --git a/server/frontend/images/time/glasses.png b/server/frontend/main/images/time/glasses.png
similarity index 100%
rename from server/frontend/images/time/glasses.png
rename to server/frontend/main/images/time/glasses.png
diff --git a/server/frontend/images/time/love-letter_6425091.png b/server/frontend/main/images/time/love-letter_6425091.png
similarity index 100%
rename from server/frontend/images/time/love-letter_6425091.png
rename to server/frontend/main/images/time/love-letter_6425091.png
diff --git a/server/frontend/images/time/love-world_18905915.png b/server/frontend/main/images/time/love-world_18905915.png
similarity index 100%
rename from server/frontend/images/time/love-world_18905915.png
rename to server/frontend/main/images/time/love-world_18905915.png
diff --git a/server/frontend/images/time/message_6649165.png b/server/frontend/main/images/time/message_6649165.png
similarity index 100%
rename from server/frontend/images/time/message_6649165.png
rename to server/frontend/main/images/time/message_6649165.png
diff --git a/server/frontend/images/time/ring.png b/server/frontend/main/images/time/ring.png
similarity index 100%
rename from server/frontend/images/time/ring.png
rename to server/frontend/main/images/time/ring.png
diff --git a/server/frontend/images/time/table.png b/server/frontend/main/images/time/table.png
similarity index 100%
rename from server/frontend/images/time/table.png
rename to server/frontend/main/images/time/table.png
diff --git a/server/frontend/images/time/wedding-dinner_11196102.png b/server/frontend/main/images/time/wedding-dinner_11196102.png
similarity index 100%
rename from server/frontend/images/time/wedding-dinner_11196102.png
rename to server/frontend/main/images/time/wedding-dinner_11196102.png
diff --git a/server/frontend/images/Без названия (1).jpg b/server/frontend/main/images/Без названия (1).jpg
similarity index 100%
rename from server/frontend/images/Без названия (1).jpg
rename to server/frontend/main/images/Без названия (1).jpg
diff --git a/server/frontend/images/Без названия (2).jpg b/server/frontend/main/images/Без названия (2).jpg
similarity index 100%
rename from server/frontend/images/Без названия (2).jpg
rename to server/frontend/main/images/Без названия (2).jpg
diff --git a/server/frontend/images/Без названия (3).jpg b/server/frontend/main/images/Без названия (3).jpg
similarity index 100%
rename from server/frontend/images/Без названия (3).jpg
rename to server/frontend/main/images/Без названия (3).jpg
diff --git a/server/frontend/images/Без названия.jpg b/server/frontend/main/images/Без названия.jpg
similarity index 100%
rename from server/frontend/images/Без названия.jpg
rename to server/frontend/main/images/Без названия.jpg
diff --git a/server/frontend/images/Элегантный свадебный банкет_ пастельные цветы и золотые детали.jpg b/server/frontend/main/images/Элегантный свадебный банкет_ пастельные цветы и золотые детали.jpg
similarity index 100%
rename from server/frontend/images/Элегантный свадебный банкет_ пастельные цветы и золотые детали.jpg
rename to server/frontend/main/images/Элегантный свадебный банкет_ пастельные цветы и золотые детали.jpg
diff --git a/server/frontend/images/мудборд.jpg b/server/frontend/main/images/мудборд.jpg
similarity index 100%
rename from server/frontend/images/мудборд.jpg
rename to server/frontend/main/images/мудборд.jpg
diff --git a/server/frontend/index.html b/server/frontend/main/index.html
similarity index 86%
rename from server/frontend/index.html
rename to server/frontend/main/index.html
index b2dcf64..f41ec46 100644
--- a/server/frontend/index.html
+++ b/server/frontend/main/index.html
@@ -64,7 +64,7 @@
-
+
@@ -300,38 +300,27 @@
-
@@ -434,20 +423,20 @@
Просим Вас заполнить форму и подтвердить своё участие
-
@@ -470,21 +459,21 @@
-
-
+