├── .editorconfig ├── .env.example ├── .gitattributes ├── .gitignore ├── LICENSE.md ├── README.md ├── app ├── Console │ └── Kernel.php ├── Exceptions │ └── Handler.php ├── Filament │ ├── Pages │ │ ├── Dashboard.php │ │ └── Profile.php │ ├── Resources │ │ ├── AccountResource.php │ │ ├── AccountResource │ │ │ └── Pages │ │ │ │ ├── AccountDetail.php │ │ │ │ └── ManageAccounts.php │ │ ├── AccountTypeResource.php │ │ ├── AccountTypeResource │ │ │ └── Pages │ │ │ │ └── ManageAccountTypes.php │ │ ├── AgreementResource.php │ │ ├── AgreementResource │ │ │ └── Pages │ │ │ │ ├── CreateAgreement.php │ │ │ │ ├── EditAgreement.php │ │ │ │ ├── ListAgreements.php │ │ │ │ └── ViewAgreement.php │ │ ├── BillResource.php │ │ ├── BillResource │ │ │ └── Pages │ │ │ │ ├── CreateBill.php │ │ │ │ ├── EditBill.php │ │ │ │ ├── ListBills.php │ │ │ │ └── ViewBill.php │ │ ├── CategoryResource.php │ │ ├── CategoryResource │ │ │ └── Pages │ │ │ │ └── ManageCategories.php │ │ ├── CheckResource.php │ │ ├── CheckResource │ │ │ └── Pages │ │ │ │ └── ManageChecks.php │ │ ├── CompanyResource.php │ │ ├── CompanyResource │ │ │ └── Pages │ │ │ │ └── ManageCompanies.php │ │ ├── CorporationResource.php │ │ ├── CorporationResource │ │ │ ├── Pages │ │ │ │ ├── CorporationDetail.php │ │ │ │ └── ManageCorporations.php │ │ │ └── Widgets │ │ │ │ ├── ChecksWidget.php │ │ │ │ ├── InvoicesWidget.php │ │ │ │ └── RevenuesWidget.php │ │ ├── CurrencyResource.php │ │ ├── CurrencyResource │ │ │ └── Pages │ │ │ │ └── ManageCurrencies.php │ │ ├── EventResource.php │ │ ├── EventResource │ │ │ └── Pages │ │ │ │ └── ManageEvents.php │ │ ├── ExpenseResource.php │ │ ├── ExpenseResource │ │ │ ├── Pages │ │ │ │ └── ManageExpenses.php │ │ │ └── Widgets │ │ │ │ └── ExpenseWidget.php │ │ ├── InvoiceResource.php │ │ ├── InvoiceResource │ │ │ └── Pages │ │ │ │ ├── CreateInvoice.php │ │ │ │ ├── EditInvoice.php │ │ │ │ ├── ListInvoices.php │ │ │ │ └── ViewInvoice.php │ │ ├── MaterialResource.php │ │ ├── MaterialResource │ │ │ └── Pages │ │ │ │ └── ManageMaterials.php │ │ ├── RevenueResource.php │ │ ├── RevenueResource │ │ │ ├── Pages │ │ │ │ └── ManageRevenues.php │ │ │ └── Widgets │ │ │ │ └── RevenueWidget.php │ │ ├── TaxResource.php │ │ ├── TaxResource │ │ │ └── Pages │ │ │ │ └── ManageTaxes.php │ │ ├── TransactionResource.php │ │ ├── TransactionResource │ │ │ └── Pages │ │ │ │ └── ManageTransactions.php │ │ ├── UnitResource.php │ │ ├── UnitResource │ │ │ └── Pages │ │ │ │ └── ManageUnits.php │ │ ├── WaybillResource.php │ │ ├── WaybillResource │ │ │ └── Pages │ │ │ │ ├── CreateWaybill.php │ │ │ │ ├── EditWaybill.php │ │ │ │ ├── ListWaybills.php │ │ │ │ └── ViewWaybill.php │ │ ├── WithHoldingResource.php │ │ └── WithHoldingResource │ │ │ └── Pages │ │ │ └── ManageWithHoldings.php │ └── Widgets │ │ └── CalendarWidget.php ├── Http │ ├── Controllers │ │ ├── Auth │ │ │ ├── AuthenticatedSessionController.php │ │ │ ├── ConfirmablePasswordController.php │ │ │ ├── EmailVerificationNotificationController.php │ │ │ ├── EmailVerificationPromptController.php │ │ │ ├── NewPasswordController.php │ │ │ ├── PasswordController.php │ │ │ ├── PasswordResetLinkController.php │ │ │ ├── RegisteredUserController.php │ │ │ └── VerifyEmailController.php │ │ ├── Controller.php │ │ └── ProfileController.php │ ├── Kernel.php │ ├── Livewire │ │ ├── Account │ │ │ ├── CheckTable.php │ │ │ ├── ExpenseTable.php │ │ │ ├── RevenueTable.php │ │ │ └── TransactionTable.php │ │ ├── CompanySelect.php │ │ └── Corporation │ │ │ ├── AgreementTable.php │ │ │ ├── BillTable.php │ │ │ ├── CheckTable.php │ │ │ ├── ExpenseTable.php │ │ │ ├── InvoiceTable.php │ │ │ ├── RevenueTable.php │ │ │ └── WaybillTable.php │ ├── Middleware │ │ ├── Authenticate.php │ │ ├── CompanyCheck.php │ │ ├── EncryptCookies.php │ │ ├── PreventRequestsDuringMaintenance.php │ │ ├── RedirectIfAuthenticated.php │ │ ├── TrimStrings.php │ │ ├── TrustHosts.php │ │ ├── TrustProxies.php │ │ ├── ValidateSignature.php │ │ └── VerifyCsrfToken.php │ └── Requests │ │ ├── Auth │ │ └── LoginRequest.php │ │ └── ProfileUpdateRequest.php ├── Models │ ├── Account.php │ ├── AccountType.php │ ├── Agreement.php │ ├── Bill.php │ ├── BillItem.php │ ├── BillPayment.php │ ├── Category.php │ ├── Check.php │ ├── Company.php │ ├── Corporation.php │ ├── Currency.php │ ├── Event.php │ ├── Expense.php │ ├── Invoice.php │ ├── InvoiceItem.php │ ├── InvoicePayment.php │ ├── Material.php │ ├── Revenue.php │ ├── Tax.php │ ├── Transaction.php │ ├── Unit.php │ ├── User.php │ ├── Waybill.php │ ├── WaybillItem.php │ └── WithHolding.php ├── Providers │ ├── AppServiceProvider.php │ ├── AuthServiceProvider.php │ ├── BroadcastServiceProvider.php │ ├── EventServiceProvider.php │ └── RouteServiceProvider.php └── View │ └── Components │ ├── AppLayout.php │ └── GuestLayout.php ├── artisan ├── bootstrap ├── app.php └── cache │ └── .gitignore ├── composer.json ├── composer.lock ├── config ├── app.php ├── auth.php ├── broadcasting.php ├── cache.php ├── cors.php ├── database.php ├── filament-fullcalendar.php ├── filament.php ├── filesystems.php ├── hashing.php ├── logging.php ├── mail.php ├── notifications.php ├── queue.php ├── sanctum.php ├── services.php ├── session.php ├── translation-manager.php └── view.php ├── database ├── .gitignore ├── factories │ └── UserFactory.php ├── migrations │ ├── 2014_10_12_000000_create_users_table.php │ ├── 2014_10_12_100000_create_password_reset_tokens_table.php │ ├── 2019_08_19_000000_create_failed_jobs_table.php │ ├── 2019_12_14_000001_create_personal_access_tokens_table.php │ ├── 2023_05_13_083405_create_currencies_table.php │ ├── 2023_05_13_094326_create_companies_table.php │ ├── 2023_05_13_105403_create_media_table.php │ ├── 2023_05_16_071604_create_account_types_table.php │ ├── 2023_05_16_073133_create_taxes_table.php │ ├── 2023_05_16_073500_create_with_holdings_table.php │ ├── 2023_05_16_073951_create_accounts_table.php │ ├── 2023_05_16_080526_create_units_table.php │ ├── 2023_05_16_080817_create_corporations_table.php │ ├── 2023_05_16_083113_create_categories_table.php │ ├── 2023_05_16_085239_create_materials_table.php │ ├── 2023_05_16_093451_create_agreements_table.php │ ├── 2023_05_16_101721_create_waybills_table.php │ ├── 2023_05_16_111440_create_waybill_items_table.php │ ├── 2023_05_16_123652_create_invoices_table.php │ ├── 2023_05_16_123922_create_invoice_items_table.php │ ├── 2023_05_19_091035_create_revenues_table.php │ ├── 2023_05_19_091518_create_invoice_payments_table.php │ ├── 2023_05_19_144742_create_notifications_table.php │ ├── 2023_05_24_121232_create_bills_table.php │ ├── 2023_05_24_121321_create_bill_items_table.php │ ├── 2023_05_24_121330_create_expenses_table.php │ ├── 2023_05_24_121341_create_bill_payments_table.php │ ├── 2023_05_24_132656_create_transactions_table.php │ ├── 2023_05_27_224508_create_language_lines_table.php │ ├── 2023_05_28_175048_create_checks_table.php │ └── 2023_06_14_224051_create_events_table.php └── seeders │ ├── AccountSeeder.php │ ├── AccountTypeSeeder.php │ ├── CategorySeeder.php │ ├── CompanySeeder.php │ ├── CorporationSeeder.php │ ├── CurrencySeeder.php │ ├── DatabaseSeeder.php │ ├── MaterialSeeder.php │ ├── TaxSeeder.php │ ├── UnitSeeder.php │ └── WithHoldingSeeder.php ├── lang ├── en │ ├── account_types.php │ ├── accounts.php │ ├── agreements.php │ ├── auth.php │ ├── bills.php │ ├── categories.php │ ├── checks.php │ ├── companies.php │ ├── corporations.php │ ├── currencies.php │ ├── events.php │ ├── expenses.php │ ├── general.php │ ├── invoices.php │ ├── materials.php │ ├── pagination.php │ ├── passwords.php │ ├── profile.php │ ├── revenues.php │ ├── taxes.php │ ├── transactions.php │ ├── units.php │ ├── validation.php │ ├── waybills.php │ └── withholdings.php └── tr │ ├── account_types.php │ ├── accounts.php │ ├── agreements.php │ ├── auth.php │ ├── bills.php │ ├── categories.php │ ├── checks.php │ ├── companies.php │ ├── corporations.php │ ├── currencies.php │ ├── events.php │ ├── expenses.php │ ├── general.php │ ├── invoices.php │ ├── materials.php │ ├── pagination.php │ ├── passwords.php │ ├── profile.php │ ├── revenues.php │ ├── taxes.php │ ├── transactions.php │ ├── units.php │ ├── validation.php │ ├── waybills.php │ └── withholdings.php ├── package-lock.json ├── package.json ├── phpunit.xml ├── postcss.config.js ├── public ├── .htaccess ├── favicon.ico ├── images │ ├── favicon.png │ ├── payvel-dark.svg │ ├── payvel.svg │ └── screenshots │ │ ├── payvel-sc-1.png │ │ ├── payvel-sc-10.png │ │ ├── payvel-sc-2.png │ │ ├── payvel-sc-3.png │ │ ├── payvel-sc-4.png │ │ ├── payvel-sc-5.png │ │ ├── payvel-sc-6.png │ │ ├── payvel-sc-7.png │ │ ├── payvel-sc-8.png │ │ └── payvel-sc-9.png ├── index.php └── robots.txt ├── resources ├── css │ └── app.css ├── js │ └── app.js └── views │ ├── auth │ ├── confirm-password.blade.php │ ├── forgot-password.blade.php │ ├── login.blade.php │ ├── register.blade.php │ ├── reset-password.blade.php │ └── verify-email.blade.php │ ├── components │ ├── application-logo.blade.php │ ├── auth-session-status.blade.php │ ├── danger-button.blade.php │ ├── dropdown-link.blade.php │ ├── dropdown.blade.php │ ├── input-error.blade.php │ ├── input-label.blade.php │ ├── modal.blade.php │ ├── nav-link.blade.php │ ├── primary-button.blade.php │ ├── responsive-nav-link.blade.php │ ├── secondary-button.blade.php │ └── text-input.blade.php │ ├── dashboard.blade.php │ ├── filament │ ├── pages │ │ ├── dashboard.blade.php │ │ └── profile.blade.php │ ├── resources │ │ ├── account-resource │ │ │ └── pages │ │ │ │ └── account-detail.blade.php │ │ └── corporation-resource │ │ │ └── pages │ │ │ └── corporation-detail.blade.php │ └── widgets │ │ └── calendar-widget.blade.php │ ├── layouts │ ├── app.blade.php │ ├── guest.blade.php │ └── navigation.blade.php │ ├── livewire │ ├── account │ │ ├── check-table.blade.php │ │ ├── expense-table.blade.php │ │ ├── revenue-table.blade.php │ │ └── transaction-table.blade.php │ ├── company-select.blade.php │ └── corporation │ │ ├── agreement-table.blade.php │ │ ├── bill-table.blade.php │ │ ├── check-table.blade.php │ │ ├── expense-table.blade.php │ │ ├── invoice-table.blade.php │ │ ├── revenue-table.blade.php │ │ └── waybill-table.blade.php │ ├── profile │ ├── edit.blade.php │ └── partials │ │ ├── delete-user-form.blade.php │ │ ├── update-password-form.blade.php │ │ └── update-profile-information-form.blade.php │ ├── todos.md │ ├── vendor │ └── filament │ │ ├── components │ │ ├── brand-icon.blade.php │ │ ├── brand.blade.php │ │ ├── button.blade.php │ │ ├── card │ │ │ ├── heading.blade.php │ │ │ └── index.blade.php │ │ ├── dropdown │ │ │ ├── header.blade.php │ │ │ ├── index.blade.php │ │ │ ├── item.blade.php │ │ │ └── list │ │ │ │ ├── index.blade.php │ │ │ │ └── item.blade.php │ │ ├── footer.blade.php │ │ ├── form │ │ │ ├── actions.blade.php │ │ │ └── index.blade.php │ │ ├── global-search │ │ │ ├── actions │ │ │ │ ├── action.blade.php │ │ │ │ └── index.blade.php │ │ │ ├── end.blade.php │ │ │ ├── index.blade.php │ │ │ ├── input.blade.php │ │ │ ├── no-results-message.blade.php │ │ │ ├── result-group.blade.php │ │ │ ├── result.blade.php │ │ │ ├── results-container.blade.php │ │ │ └── start.blade.php │ │ ├── header │ │ │ ├── heading.blade.php │ │ │ ├── index.blade.php │ │ │ └── subheading.blade.php │ │ ├── hr.blade.php │ │ ├── icon-button.blade.php │ │ ├── layouts │ │ │ ├── app.blade.php │ │ │ ├── app │ │ │ │ ├── sidebar │ │ │ │ │ ├── badge.blade.php │ │ │ │ │ ├── end.blade.php │ │ │ │ │ ├── footer.blade.php │ │ │ │ │ ├── github-logo.blade.php │ │ │ │ │ ├── group.blade.php │ │ │ │ │ ├── index.blade.php │ │ │ │ │ ├── item.blade.php │ │ │ │ │ └── start.blade.php │ │ │ │ └── topbar │ │ │ │ │ ├── breadcrumbs.blade.php │ │ │ │ │ ├── database-notifications-trigger.blade.php │ │ │ │ │ └── user-menu.blade.php │ │ │ ├── base.blade.php │ │ │ └── card.blade.php │ │ ├── link.blade.php │ │ ├── modal │ │ │ ├── actions.blade.php │ │ │ ├── heading.blade.php │ │ │ ├── index.blade.php │ │ │ └── subheading.blade.php │ │ ├── notification-manager.blade.php │ │ ├── page.blade.php │ │ ├── pages │ │ │ └── actions │ │ │ │ ├── action.blade.php │ │ │ │ └── index.blade.php │ │ ├── resources │ │ │ └── relation-managers │ │ │ │ └── index.blade.php │ │ ├── stats │ │ │ ├── card.blade.php │ │ │ └── index.blade.php │ │ ├── tabs │ │ │ ├── index.blade.php │ │ │ └── item.blade.php │ │ ├── topbar.blade.php │ │ ├── user-avatar.blade.php │ │ ├── widget.blade.php │ │ └── widgets.blade.php │ │ ├── global-search │ │ └── actions │ │ │ ├── button-action.blade.php │ │ │ ├── icon-button-action.blade.php │ │ │ └── link-action.blade.php │ │ ├── login.blade.php │ │ ├── pages │ │ ├── actions │ │ │ ├── button-action.blade.php │ │ │ ├── group.blade.php │ │ │ ├── grouped-action.blade.php │ │ │ ├── icon-button-action.blade.php │ │ │ ├── link-action.blade.php │ │ │ ├── modal │ │ │ │ └── actions │ │ │ │ │ └── button-action.blade.php │ │ │ └── select-action.blade.php │ │ └── dashboard.blade.php │ │ ├── resources │ │ ├── pages │ │ │ ├── create-record.blade.php │ │ │ ├── edit-record.blade.php │ │ │ ├── list-records.blade.php │ │ │ └── view-record.blade.php │ │ └── relation-manager.blade.php │ │ └── widgets │ │ ├── account-widget.blade.php │ │ ├── chart-widget.blade.php │ │ ├── filament-info-widget.blade.php │ │ ├── stats-overview-widget.blade.php │ │ ├── stats-overview-widget │ │ └── card.blade.php │ │ └── table-widget.blade.php │ └── welcome.blade.php ├── routes ├── api.php ├── auth.php ├── channels.php ├── console.php └── web.php ├── storage ├── app │ ├── .gitignore │ └── public │ │ └── .gitignore ├── framework │ ├── .gitignore │ ├── cache │ │ ├── .gitignore │ │ └── data │ │ │ └── .gitignore │ ├── sessions │ │ └── .gitignore │ ├── testing │ │ └── .gitignore │ └── views │ │ └── .gitignore └── logs │ └── .gitignore ├── tailwind.config.js ├── tests ├── CreatesApplication.php ├── Feature │ ├── Auth │ │ ├── AuthenticationTest.php │ │ ├── EmailVerificationTest.php │ │ ├── PasswordConfirmationTest.php │ │ ├── PasswordResetTest.php │ │ ├── PasswordUpdateTest.php │ │ └── RegistrationTest.php │ ├── ExampleTest.php │ └── ProfileTest.php ├── TestCase.php └── Unit │ └── ExampleTest.php └── vite.config.js /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | indent_size = 4 7 | indent_style = space 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | 14 | [*.{yml,yaml}] 15 | indent_size = 2 16 | 17 | [docker-compose.yml] 18 | indent_size = 4 19 | -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | APP_NAME=PayVel 2 | APP_ENV=local 3 | APP_KEY= 4 | APP_DEBUG=true 5 | APP_URL=http://localhost 6 | FILAMENT_DOMAIN=localhost 7 | 8 | LOG_CHANNEL=daily 9 | LOG_DEPRECATIONS_CHANNEL=null 10 | LOG_LEVEL=debug 11 | 12 | DB_CONNECTION=mysql 13 | DB_HOST=127.0.0.1 14 | DB_PORT=3306 15 | DB_DATABASE=payvel 16 | DB_USERNAME=root 17 | DB_PASSWORD= 18 | 19 | BROADCAST_DRIVER=log 20 | CACHE_DRIVER=file 21 | FILESYSTEM_DISK=local 22 | QUEUE_CONNECTION=sync 23 | SESSION_DRIVER=file 24 | SESSION_LIFETIME=120 25 | 26 | MEMCACHED_HOST=127.0.0.1 27 | 28 | REDIS_HOST=127.0.0.1 29 | REDIS_PASSWORD=null 30 | REDIS_PORT=6379 31 | 32 | MAIL_MAILER=smtp 33 | MAIL_HOST=mailpit 34 | MAIL_PORT=1025 35 | MAIL_USERNAME=null 36 | MAIL_PASSWORD=null 37 | MAIL_ENCRYPTION=null 38 | MAIL_FROM_ADDRESS="hello@example.com" 39 | MAIL_FROM_NAME="${APP_NAME}" 40 | 41 | AWS_ACCESS_KEY_ID= 42 | AWS_SECRET_ACCESS_KEY= 43 | AWS_DEFAULT_REGION=us-east-1 44 | AWS_BUCKET= 45 | AWS_USE_PATH_STYLE_ENDPOINT=false 46 | 47 | PUSHER_APP_ID= 48 | PUSHER_APP_KEY= 49 | PUSHER_APP_SECRET= 50 | PUSHER_HOST= 51 | PUSHER_PORT=443 52 | PUSHER_SCHEME=https 53 | PUSHER_APP_CLUSTER=mt1 54 | 55 | VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" 56 | VITE_PUSHER_HOST="${PUSHER_HOST}" 57 | VITE_PUSHER_PORT="${PUSHER_PORT}" 58 | VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" 59 | VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" 60 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | 3 | *.blade.php diff=html 4 | *.css diff=css 5 | *.html diff=html 6 | *.md diff=markdown 7 | *.php diff=php 8 | 9 | /.github export-ignore 10 | CHANGELOG.md export-ignore 11 | .styleci.yml export-ignore 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.phpunit.cache 2 | /node_modules 3 | /public/build 4 | /public/hot 5 | /public/storage 6 | /storage/*.key 7 | /vendor 8 | .env 9 | .env.backup 10 | .env.production 11 | .phpunit.result.cache 12 | Homestead.json 13 | Homestead.yaml 14 | auth.json 15 | npm-debug.log 16 | yarn-error.log 17 | /.fleet 18 | /.idea 19 | /.vscode 20 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Azad Furkan ŞAKAR 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /app/Console/Kernel.php: -------------------------------------------------------------------------------- 1 | command('inspire')->hourly(); 17 | 18 | $schedule->command('migrate:fresh --seed')->dailyAt('00:00'); 19 | } 20 | 21 | /** 22 | * Register the commands for the application. 23 | */ 24 | protected function commands(): void 25 | { 26 | $this->load(__DIR__.'/Commands'); 27 | 28 | require base_path('routes/console.php'); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/Exceptions/Handler.php: -------------------------------------------------------------------------------- 1 | 14 | */ 15 | protected $dontFlash = [ 16 | 'current_password', 17 | 'password', 18 | 'password_confirmation', 19 | ]; 20 | 21 | /** 22 | * Register the exception handling callbacks for the application. 23 | */ 24 | public function register(): void 25 | { 26 | $this->reportable(function (Throwable $e) { 27 | // 28 | }); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/Filament/Pages/Profile.php: -------------------------------------------------------------------------------- 1 | user = auth()->user(); 21 | } 22 | 23 | /** 24 | * @return bool 25 | */ 26 | protected static function shouldRegisterNavigation(): bool 27 | { 28 | return false; 29 | } 30 | 31 | protected function getTitle(): string 32 | { 33 | return static::$title ?? __('profile.profile'); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/Filament/Resources/AccountResource/Pages/AccountDetail.php: -------------------------------------------------------------------------------- 1 | account = Account::find($this->record); 26 | } 27 | 28 | protected function getActions(): array 29 | { 30 | return [ 31 | Actions\Action::make('back') 32 | ->label(__('general.go_back')) 33 | ->icon('heroicon-o-arrow-left') 34 | ->url(route('filament.resources.accounts.index')) 35 | ]; 36 | } 37 | 38 | protected function getTitle(): string 39 | { 40 | return $this->account->name; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /app/Filament/Resources/AccountResource/Pages/ManageAccounts.php: -------------------------------------------------------------------------------- 1 | label(__('general.go_back')) 22 | ->icon('heroicon-o-arrow-left') 23 | ->url(route('filament.resources.agreements.index')) 24 | ]; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/Filament/Resources/AgreementResource/Pages/ListAgreements.php: -------------------------------------------------------------------------------- 1 | color('secondary'), 18 | Actions\Action::make('back') 19 | ->label(__('general.go_back')) 20 | ->icon('heroicon-o-arrow-left') 21 | ->url(route('filament.resources.agreements.index')) 22 | ]; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/Filament/Resources/BillResource/Pages/CreateBill.php: -------------------------------------------------------------------------------- 1 | label(__('general.go_back')) 18 | ->icon('heroicon-o-arrow-left') 19 | ->url(route('filament.resources.bills.index')) 20 | ]; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/Filament/Resources/BillResource/Pages/EditBill.php: -------------------------------------------------------------------------------- 1 | hidden(fn ($record) => $record->has_any_relation), 19 | Actions\ForceDeleteAction::make() 20 | ->before(function ($record) { 21 | if ($record->items()->count() > 0) { 22 | $record->items()->delete(); 23 | } 24 | if ($record->payments()->count() > 0) { 25 | $record->payments()->delete(); 26 | } 27 | }), 28 | Actions\RestoreAction::make(), 29 | Actions\Action::make('back') 30 | ->label(__('general.go_back')) 31 | ->icon('heroicon-o-arrow-left') 32 | ->url(route('filament.resources.bills.index')) 33 | ]; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/Filament/Resources/BillResource/Pages/ListBills.php: -------------------------------------------------------------------------------- 1 | color('secondary'), 18 | Actions\Action::make('back') 19 | ->label(__('general.go_back')) 20 | ->icon('heroicon-o-arrow-left') 21 | ->url(route('filament.resources.bills.index')) 22 | ]; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/Filament/Resources/CategoryResource/Pages/ManageCategories.php: -------------------------------------------------------------------------------- 1 | after(function ($record) { 19 | if ($record->status != 'paid') { 20 | $record->paid_date = null; 21 | $record->save(); 22 | } 23 | 24 | Event::create([ 25 | 'title' => 'Check Payment', 26 | 'description' => $record->number . ' - ' . $record->corporation->name, 27 | 'start' => $record->due_date, 28 | 'end' => null, 29 | 'reminder' => true, 30 | 'check_id' => $record->id, 31 | ]); 32 | }), 33 | ]; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/Filament/Resources/CompanyResource/Pages/ManageCompanies.php: -------------------------------------------------------------------------------- 1 | find($this->corporationID); 20 | 21 | $invoiceTotal = Card::make(__('corporations.bill_total'), $this->formatMoney($corporation->invoice_total)); 22 | $billTotal = Card::make(__('corporations.invoice_total'), $this->formatMoney($corporation->bill_total)); 23 | 24 | return [ 25 | $invoiceTotal, 26 | $billTotal, 27 | ]; 28 | } 29 | 30 | protected function formatMoney($amount) 31 | { 32 | $corporation = Corporation::find($this->corporationID); 33 | 34 | return $corporation->currency->position == 'left' ? $corporation->currency->symbol . number_format($amount, 2) : number_format($amount, 2) . $corporation->currency->symbol; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/Filament/Resources/CurrencyResource/Pages/ManageCurrencies.php: -------------------------------------------------------------------------------- 1 | pluck('code', 'id'); 18 | 19 | $groupedExpenses = []; 20 | 21 | foreach ($currencies as $currencyId => $currencyCode) { 22 | $groupedExpenses[] = Card::make($currencyCode, number_format(Expense::query() 23 | ->whereHas('corporation', function ($query) use ($currencyId) { 24 | $query->where('currency_id', $currencyId); 25 | }) 26 | ->whereDate('due_at', now()) 27 | ->sum('amount'), 2)); 28 | } 29 | 30 | return $groupedExpenses; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/Filament/Resources/InvoiceResource/Pages/CreateInvoice.php: -------------------------------------------------------------------------------- 1 | label(__('general.go_back')) 17 | ->icon('heroicon-o-arrow-left') 18 | ->url(route('filament.resources.invoices.index')) 19 | ]; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/Filament/Resources/InvoiceResource/Pages/EditInvoice.php: -------------------------------------------------------------------------------- 1 | hidden(fn ($record) => $record->has_any_relation), 19 | Actions\ForceDeleteAction::make() 20 | ->before(function ($record) { 21 | if ($record->items()->count() > 0) { 22 | $record->items()->delete(); 23 | } 24 | if($record->payments()->count() > 0) { 25 | $record->payments()->delete(); 26 | } 27 | }), 28 | Actions\RestoreAction::make(), 29 | Actions\Action::make('back') 30 | ->label(__('general.go_back')) 31 | ->icon('heroicon-o-arrow-left') 32 | ->url(route('filament.resources.invoices.index')) 33 | ]; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/Filament/Resources/InvoiceResource/Pages/ListInvoices.php: -------------------------------------------------------------------------------- 1 | color('secondary'), 18 | Actions\Action::make('back') 19 | ->label(__('general.go_back')) 20 | ->icon('heroicon-o-arrow-left') 21 | ->url(route('filament.resources.invoices.index')) 22 | ]; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/Filament/Resources/MaterialResource/Pages/ManageMaterials.php: -------------------------------------------------------------------------------- 1 | pluck('code', 'id'); 18 | 19 | $groupedRevenues = []; 20 | 21 | foreach ($currencies as $currencyId => $currencyCode) { 22 | $groupedRevenues[] = Card::make($currencyCode, number_format(Revenue::query() 23 | ->whereHas('corporation', function ($query) use ($currencyId) { 24 | $query->where('currency_id', $currencyId); 25 | }) 26 | ->whereDate('due_at', now()) 27 | ->sum('amount'), 2)); 28 | } 29 | 30 | return $groupedRevenues; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/Filament/Resources/TaxResource/Pages/ManageTaxes.php: -------------------------------------------------------------------------------- 1 | label(__('general.go_back')) 18 | ->icon('heroicon-o-arrow-left') 19 | ->url(route('filament.resources.waybills.index')) 20 | ]; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/Filament/Resources/WaybillResource/Pages/EditWaybill.php: -------------------------------------------------------------------------------- 1 | hidden(fn ($record) => $record->has_any_relation), 19 | Actions\ForceDeleteAction::make() 20 | ->before(function ($record) { 21 | if ($record->items && $record->items->count() > 0) { 22 | foreach ($record->items as $item) { 23 | $item->delete(); 24 | } 25 | } 26 | }), 27 | Actions\RestoreAction::make(), 28 | Actions\Action::make('back') 29 | ->label(__('general.go_back')) 30 | ->icon('heroicon-o-arrow-left') 31 | ->url(route('filament.resources.waybills.index')) 32 | ]; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/Filament/Resources/WaybillResource/Pages/ListWaybills.php: -------------------------------------------------------------------------------- 1 | color('secondary'), 18 | Actions\Action::make('back') 19 | ->label(__('general.go_back')) 20 | ->icon('heroicon-o-arrow-left') 21 | ->url(route('filament.resources.waybills.index')) 22 | ]; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/Filament/Resources/WithHoldingResource/Pages/ManageWithHoldings.php: -------------------------------------------------------------------------------- 1 | fullCalendarConfig = [ 18 | 'locale' => app()->getLocale(), 19 | ]; 20 | } 21 | 22 | /** 23 | * Return events that should be rendered statically on calendar. 24 | */ 25 | public function getViewData(): array 26 | { 27 | $events = Event::select('id', 'title', 'description', 'start', 'end', 'reminder')->get()->toArray(); 28 | 29 | foreach ($events as $key => $event) { 30 | $events[$key]['color'] = '#f59e0b'; 31 | $events[$key]['backgroundColor'] = '#000000'; 32 | } 33 | 34 | return $events; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/Http/Controllers/Auth/AuthenticatedSessionController.php: -------------------------------------------------------------------------------- 1 | authenticate(); 29 | 30 | $request->session()->regenerate(); 31 | 32 | return redirect()->intended(RouteServiceProvider::HOME); 33 | } 34 | 35 | /** 36 | * Destroy an authenticated session. 37 | */ 38 | public function destroy(Request $request): RedirectResponse 39 | { 40 | Auth::guard('web')->logout(); 41 | 42 | $request->session()->invalidate(); 43 | 44 | $request->session()->regenerateToken(); 45 | 46 | return redirect('/'); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /app/Http/Controllers/Auth/ConfirmablePasswordController.php: -------------------------------------------------------------------------------- 1 | validate([ 29 | 'email' => $request->user()->email, 30 | 'password' => $request->password, 31 | ])) { 32 | throw ValidationException::withMessages([ 33 | 'password' => __('auth.password'), 34 | ]); 35 | } 36 | 37 | $request->session()->put('auth.password_confirmed_at', time()); 38 | 39 | return redirect()->intended(RouteServiceProvider::HOME); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /app/Http/Controllers/Auth/EmailVerificationNotificationController.php: -------------------------------------------------------------------------------- 1 | user()->hasVerifiedEmail()) { 18 | return redirect()->intended(RouteServiceProvider::HOME); 19 | } 20 | 21 | $request->user()->sendEmailVerificationNotification(); 22 | 23 | return back()->with('status', 'verification-link-sent'); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /app/Http/Controllers/Auth/EmailVerificationPromptController.php: -------------------------------------------------------------------------------- 1 | user()->hasVerifiedEmail() 19 | ? redirect()->intended(RouteServiceProvider::HOME) 20 | : view('auth.verify-email'); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/Http/Controllers/Auth/PasswordController.php: -------------------------------------------------------------------------------- 1 | validateWithBag('updatePassword', [ 19 | 'current_password' => ['required', 'current_password'], 20 | 'password' => ['required', Password::defaults(), 'confirmed'], 21 | ]); 22 | 23 | $request->user()->update([ 24 | 'password' => Hash::make($validated['password']), 25 | ]); 26 | 27 | return back()->with('status', 'password-updated'); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/Http/Controllers/Auth/VerifyEmailController.php: -------------------------------------------------------------------------------- 1 | user()->hasVerifiedEmail()) { 19 | return redirect()->intended(RouteServiceProvider::HOME.'?verified=1'); 20 | } 21 | 22 | if ($request->user()->markEmailAsVerified()) { 23 | event(new Verified($request->user())); 24 | } 25 | 26 | return redirect()->intended(RouteServiceProvider::HOME.'?verified=1'); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/Http/Controllers/Controller.php: -------------------------------------------------------------------------------- 1 | label(__('companies.company')) 22 | ->reactive() 23 | ->options(\App\Models\Company::pluck('name', 'id')) 24 | ->afterStateUpdated(function ($state) { 25 | $this->company_id = $state; 26 | }) 27 | ->searchable() 28 | ->required(), 29 | ]; 30 | } 31 | 32 | public function submit() 33 | { 34 | $this->validate(); 35 | session()->put('company_id', $this->company_id); 36 | return redirect()->route('filament.pages.dashboard'); 37 | } 38 | 39 | public function render() 40 | { 41 | return view('livewire.company-select'); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /app/Http/Middleware/Authenticate.php: -------------------------------------------------------------------------------- 1 | expectsJson() ? null : route('login'); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/Http/Middleware/CompanyCheck.php: -------------------------------------------------------------------------------- 1 | session()->has('company_id')) { 19 | return redirect()->route('company.select'); 20 | } 21 | return $next($request); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/Http/Middleware/EncryptCookies.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | protected $except = [ 15 | // 16 | ]; 17 | } 18 | -------------------------------------------------------------------------------- /app/Http/Middleware/PreventRequestsDuringMaintenance.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | protected $except = [ 15 | // 16 | ]; 17 | } 18 | -------------------------------------------------------------------------------- /app/Http/Middleware/RedirectIfAuthenticated.php: -------------------------------------------------------------------------------- 1 | check()) { 24 | return redirect(RouteServiceProvider::HOME); 25 | } 26 | } 27 | 28 | return $next($request); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/Http/Middleware/TrimStrings.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | protected $except = [ 15 | 'current_password', 16 | 'password', 17 | 'password_confirmation', 18 | ]; 19 | } 20 | -------------------------------------------------------------------------------- /app/Http/Middleware/TrustHosts.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | public function hosts(): array 15 | { 16 | return [ 17 | $this->allSubdomainsOfApplicationUrl(), 18 | ]; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/Http/Middleware/TrustProxies.php: -------------------------------------------------------------------------------- 1 | |string|null 14 | */ 15 | protected $proxies; 16 | 17 | /** 18 | * The headers that should be used to detect proxies. 19 | * 20 | * @var int 21 | */ 22 | protected $headers = 23 | Request::HEADER_X_FORWARDED_FOR | 24 | Request::HEADER_X_FORWARDED_HOST | 25 | Request::HEADER_X_FORWARDED_PORT | 26 | Request::HEADER_X_FORWARDED_PROTO | 27 | Request::HEADER_X_FORWARDED_AWS_ELB; 28 | } 29 | -------------------------------------------------------------------------------- /app/Http/Middleware/ValidateSignature.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | protected $except = [ 15 | // 'fbclid', 16 | // 'utm_campaign', 17 | // 'utm_content', 18 | // 'utm_medium', 19 | // 'utm_source', 20 | // 'utm_term', 21 | ]; 22 | } 23 | -------------------------------------------------------------------------------- /app/Http/Middleware/VerifyCsrfToken.php: -------------------------------------------------------------------------------- 1 | 13 | */ 14 | protected $except = [ 15 | // 16 | ]; 17 | } 18 | -------------------------------------------------------------------------------- /app/Http/Requests/ProfileUpdateRequest.php: -------------------------------------------------------------------------------- 1 | 15 | */ 16 | public function rules(): array 17 | { 18 | return [ 19 | 'name' => ['string', 'max:255'], 20 | 'email' => ['email', 'max:255', Rule::unique(User::class)->ignore($this->user()->id)], 21 | ]; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/Models/AccountType.php: -------------------------------------------------------------------------------- 1 | hasMany(Account::class); 24 | } 25 | 26 | public function getHasAnyRelationAttribute() 27 | { 28 | return $this->accounts->count() > 0; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/Models/Agreement.php: -------------------------------------------------------------------------------- 1 | 'date' 25 | ]; 26 | 27 | protected $appends = [ 28 | 'has_any_relation' 29 | ]; 30 | 31 | public function company() 32 | { 33 | return $this->belongsTo(Company::class); 34 | } 35 | 36 | public function corporation() 37 | { 38 | return $this->belongsTo(Corporation::class); 39 | } 40 | 41 | public function registerMediaCollections(): void 42 | { 43 | $this->addMediaCollection('agreement') 44 | ->singleFile(); 45 | } 46 | 47 | public function getHasAnyRelationAttribute() 48 | { 49 | return $this->company()->exists(); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /app/Models/BillItem.php: -------------------------------------------------------------------------------- 1 | belongsTo(Bill::class); 27 | } 28 | 29 | public function material() 30 | { 31 | return $this->belongsTo(Material::class); 32 | } 33 | 34 | public function getTaxRateAttribute() 35 | { 36 | return $this->material->tax->rate; 37 | } 38 | 39 | public function getUnitNameAttribute() 40 | { 41 | return $this->material->unit->name; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /app/Models/BillPayment.php: -------------------------------------------------------------------------------- 1 | belongsTo(Bill::class); 20 | } 21 | 22 | public function expense() 23 | { 24 | return $this->belongsTo(Expense::class); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/Models/Category.php: -------------------------------------------------------------------------------- 1 | hasMany(Revenue::class); 25 | } 26 | 27 | public function expenses() 28 | { 29 | return $this->hasMany(Expense::class); 30 | } 31 | 32 | public function getHasAnyRelationAttribute() 33 | { 34 | return $this->revenues->count() > 0 || $this->expenses->count() > 0; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/Models/Currency.php: -------------------------------------------------------------------------------- 1 | hasMany(Corporation::class); 23 | } 24 | 25 | public function accounts() 26 | { 27 | return $this->hasMany(Account::class); 28 | } 29 | 30 | public function getHasAnyRelationAttribute() 31 | { 32 | return $this->corporations->count() > 0 || $this->accounts->count() > 0; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/Models/Event.php: -------------------------------------------------------------------------------- 1 | 'datetime', 23 | 'end' => 'datetime', 24 | ]; 25 | 26 | public function check() 27 | { 28 | return $this->belongsTo(Check::class); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/Models/InvoiceItem.php: -------------------------------------------------------------------------------- 1 | belongsTo(Invoice::class); 27 | } 28 | 29 | public function material() 30 | { 31 | return $this->belongsTo(Material::class); 32 | } 33 | 34 | public function getTaxRateAttribute() 35 | { 36 | return $this->material->tax->rate; 37 | } 38 | 39 | public function getUnitNameAttribute() 40 | { 41 | return $this->material->unit->name; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /app/Models/InvoicePayment.php: -------------------------------------------------------------------------------- 1 | belongsTo(Invoice::class); 20 | } 21 | 22 | public function revenue() 23 | { 24 | return $this->belongsTo(Revenue::class); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/Models/Tax.php: -------------------------------------------------------------------------------- 1 | hasMany(Material::class); 25 | } 26 | 27 | public function getHasAnyRelationAttribute() 28 | { 29 | return $this->materials()->count() > 0; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/Models/Unit.php: -------------------------------------------------------------------------------- 1 | hasMany(Material::class); 25 | } 26 | 27 | public function getHasAnyRelationAttribute() 28 | { 29 | return $this->materials()->count() > 0; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/Models/User.php: -------------------------------------------------------------------------------- 1 | 20 | */ 21 | protected $fillable = [ 22 | 'name', 23 | 'email', 24 | 'password', 25 | ]; 26 | 27 | /** 28 | * The attributes that should be hidden for serialization. 29 | * 30 | * @var array 31 | */ 32 | protected $hidden = [ 33 | 'password', 34 | 'remember_token', 35 | ]; 36 | 37 | /** 38 | * The attributes that should be cast. 39 | * 40 | * @var array 41 | */ 42 | protected $casts = [ 43 | 'email_verified_at' => 'datetime', 44 | ]; 45 | 46 | public function canAccessFilament(): bool 47 | { 48 | return str_ends_with($this->email, '@example.com') && $this->hasVerifiedEmail(); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /app/Models/WaybillItem.php: -------------------------------------------------------------------------------- 1 | belongsTo(Waybill::class); 26 | } 27 | 28 | public function material() 29 | { 30 | return $this->belongsTo(Material::class); 31 | } 32 | 33 | public function getTaxRateAttribute() 34 | { 35 | return $this->material->tax->rate; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /app/Models/WithHolding.php: -------------------------------------------------------------------------------- 1 | hasMany(Invoice::class); 25 | } 26 | 27 | public function bills() 28 | { 29 | return $this->hasMany(Bill::class); 30 | } 31 | 32 | public function getHasAnyRelationAttribute() 33 | { 34 | return $this->invoices()->count() > 0 || $this->bills()->count() > 0; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/Providers/AuthServiceProvider.php: -------------------------------------------------------------------------------- 1 | 14 | */ 15 | protected $policies = [ 16 | // 17 | ]; 18 | 19 | /** 20 | * Register any authentication / authorization services. 21 | */ 22 | public function boot(): void 23 | { 24 | // 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/Providers/BroadcastServiceProvider.php: -------------------------------------------------------------------------------- 1 | > 16 | */ 17 | protected $listen = [ 18 | Registered::class => [ 19 | SendEmailVerificationNotification::class, 20 | ], 21 | ]; 22 | 23 | /** 24 | * Register any events for your application. 25 | */ 26 | public function boot(): void 27 | { 28 | // 29 | } 30 | 31 | /** 32 | * Determine if events and listeners should be automatically discovered. 33 | */ 34 | public function shouldDiscoverEvents(): bool 35 | { 36 | return false; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/Providers/RouteServiceProvider.php: -------------------------------------------------------------------------------- 1 | by($request->user()?->id ?: $request->ip()); 29 | }); 30 | 31 | $this->routes(function () { 32 | Route::middleware('api') 33 | ->prefix('api') 34 | ->group(base_path('routes/api.php')); 35 | 36 | Route::middleware('web') 37 | ->group(base_path('routes/web.php')); 38 | }); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/View/Components/AppLayout.php: -------------------------------------------------------------------------------- 1 | ['api/*', 'sanctum/csrf-cookie'], 19 | 20 | 'allowed_methods' => ['*'], 21 | 22 | 'allowed_origins' => ['*'], 23 | 24 | 'allowed_origins_patterns' => [], 25 | 26 | 'allowed_headers' => ['*'], 27 | 28 | 'exposed_headers' => [], 29 | 30 | 'max_age' => 0, 31 | 32 | 'supports_credentials' => false, 33 | 34 | ]; 35 | -------------------------------------------------------------------------------- /config/filament-fullcalendar.php: -------------------------------------------------------------------------------- 1 | config('app.timezone'), 11 | 12 | 'locale' => config('app.locale'), 13 | 14 | 'headerToolbar' => [ 15 | 'left' => 'prev,next today', 16 | 'center' => 'title', 17 | 'right' => 'dayGridMonth,dayGridWeek,dayGridDay', 18 | ], 19 | 20 | 'navLinks' => true, 21 | 22 | 'editable' => true, 23 | 24 | 'selectable' => false, 25 | 26 | 'dayMaxEvents' => true, 27 | ]; 28 | -------------------------------------------------------------------------------- /config/services.php: -------------------------------------------------------------------------------- 1 | [ 18 | 'domain' => env('MAILGUN_DOMAIN'), 19 | 'secret' => env('MAILGUN_SECRET'), 20 | 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), 21 | 'scheme' => 'https', 22 | ], 23 | 24 | 'postmark' => [ 25 | 'token' => env('POSTMARK_TOKEN'), 26 | ], 27 | 28 | 'ses' => [ 29 | 'key' => env('AWS_ACCESS_KEY_ID'), 30 | 'secret' => env('AWS_SECRET_ACCESS_KEY'), 31 | 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), 32 | ], 33 | 34 | ]; 35 | -------------------------------------------------------------------------------- /config/view.php: -------------------------------------------------------------------------------- 1 | [ 17 | resource_path('views'), 18 | ], 19 | 20 | /* 21 | |-------------------------------------------------------------------------- 22 | | Compiled View Path 23 | |-------------------------------------------------------------------------- 24 | | 25 | | This option determines where all the compiled Blade templates will be 26 | | stored for your application. Typically, this is within the storage 27 | | directory. However, as usual, you are free to change this value. 28 | | 29 | */ 30 | 31 | 'compiled' => env( 32 | 'VIEW_COMPILED_PATH', 33 | realpath(storage_path('framework/views')) 34 | ), 35 | 36 | ]; 37 | -------------------------------------------------------------------------------- /database/.gitignore: -------------------------------------------------------------------------------- 1 | *.sqlite* 2 | -------------------------------------------------------------------------------- /database/factories/UserFactory.php: -------------------------------------------------------------------------------- 1 | 10 | */ 11 | class UserFactory extends Factory 12 | { 13 | /** 14 | * Define the model's default state. 15 | * 16 | * @return array 17 | */ 18 | public function definition(): array 19 | { 20 | return [ 21 | 'name' => fake()->name(), 22 | 'email' => fake()->unique()->safeEmail(), 23 | 'email_verified_at' => now(), 24 | 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password 25 | 'remember_token' => Str::random(10), 26 | ]; 27 | } 28 | 29 | /** 30 | * Indicate that the model's email address should be unverified. 31 | */ 32 | public function unverified(): static 33 | { 34 | return $this->state(fn (array $attributes) => [ 35 | 'email_verified_at' => null, 36 | ]); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /database/migrations/2014_10_12_000000_create_users_table.php: -------------------------------------------------------------------------------- 1 | id(); 16 | $table->string('name'); 17 | $table->string('email')->unique(); 18 | $table->timestamp('email_verified_at')->nullable(); 19 | $table->string('password'); 20 | $table->rememberToken(); 21 | $table->timestamps(); 22 | }); 23 | } 24 | 25 | /** 26 | * Reverse the migrations. 27 | */ 28 | public function down(): void 29 | { 30 | Schema::dropIfExists('users'); 31 | } 32 | }; 33 | -------------------------------------------------------------------------------- /database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php: -------------------------------------------------------------------------------- 1 | string('email')->primary(); 16 | $table->string('token'); 17 | $table->timestamp('created_at')->nullable(); 18 | }); 19 | } 20 | 21 | /** 22 | * Reverse the migrations. 23 | */ 24 | public function down(): void 25 | { 26 | Schema::dropIfExists('password_reset_tokens'); 27 | } 28 | }; 29 | -------------------------------------------------------------------------------- /database/migrations/2019_08_19_000000_create_failed_jobs_table.php: -------------------------------------------------------------------------------- 1 | id(); 16 | $table->string('uuid')->unique(); 17 | $table->text('connection'); 18 | $table->text('queue'); 19 | $table->longText('payload'); 20 | $table->longText('exception'); 21 | $table->timestamp('failed_at')->useCurrent(); 22 | }); 23 | } 24 | 25 | /** 26 | * Reverse the migrations. 27 | */ 28 | public function down(): void 29 | { 30 | Schema::dropIfExists('failed_jobs'); 31 | } 32 | }; 33 | -------------------------------------------------------------------------------- /database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php: -------------------------------------------------------------------------------- 1 | id(); 16 | $table->morphs('tokenable'); 17 | $table->string('name'); 18 | $table->string('token', 64)->unique(); 19 | $table->text('abilities')->nullable(); 20 | $table->timestamp('last_used_at')->nullable(); 21 | $table->timestamp('expires_at')->nullable(); 22 | $table->timestamps(); 23 | }); 24 | } 25 | 26 | /** 27 | * Reverse the migrations. 28 | */ 29 | public function down(): void 30 | { 31 | Schema::dropIfExists('personal_access_tokens'); 32 | } 33 | }; 34 | -------------------------------------------------------------------------------- /database/migrations/2023_05_13_083405_create_currencies_table.php: -------------------------------------------------------------------------------- 1 | id(); 16 | $table->string('name'); 17 | $table->string('code', 3)->unique(); 18 | $table->string('symbol', 3)->unique(); 19 | $table->string('position'); 20 | $table->softDeletes(); 21 | $table->timestamps(); 22 | }); 23 | } 24 | 25 | /** 26 | * Reverse the migrations. 27 | */ 28 | public function down(): void 29 | { 30 | Schema::dropIfExists('currencies'); 31 | } 32 | }; 33 | -------------------------------------------------------------------------------- /database/migrations/2023_05_13_094326_create_companies_table.php: -------------------------------------------------------------------------------- 1 | id(); 16 | $table->string('name')->unique(); 17 | $table->string('owner')->nullable(); 18 | $table->string('tel_number'); 19 | $table->string('gsm_number')->nullable(); 20 | $table->string('fax_number')->nullable(); 21 | $table->string('email')->nullable(); 22 | $table->text('address')->nullable(); 23 | $table->string('tax_office')->nullable(); 24 | $table->string('tax_number')->nullable()->unique(); 25 | $table->string('logo')->nullable(); 26 | $table->softDeletes(); 27 | $table->timestamps(); 28 | }); 29 | } 30 | 31 | /** 32 | * Reverse the migrations. 33 | */ 34 | public function down(): void 35 | { 36 | Schema::dropIfExists('companies'); 37 | } 38 | }; 39 | -------------------------------------------------------------------------------- /database/migrations/2023_05_13_105403_create_media_table.php: -------------------------------------------------------------------------------- 1 | id(); 13 | 14 | $table->morphs('model'); 15 | $table->uuid('uuid')->nullable()->unique(); 16 | $table->string('collection_name'); 17 | $table->string('name'); 18 | $table->string('file_name'); 19 | $table->string('mime_type')->nullable(); 20 | $table->string('disk'); 21 | $table->string('conversions_disk')->nullable(); 22 | $table->unsignedBigInteger('size'); 23 | $table->json('manipulations'); 24 | $table->json('custom_properties'); 25 | $table->json('generated_conversions'); 26 | $table->json('responsive_images'); 27 | $table->unsignedInteger('order_column')->nullable()->index(); 28 | 29 | $table->nullableTimestamps(); 30 | }); 31 | } 32 | }; 33 | -------------------------------------------------------------------------------- /database/migrations/2023_05_16_071604_create_account_types_table.php: -------------------------------------------------------------------------------- 1 | id(); 16 | $table->string('name')->unique(); 17 | $table->softDeletes(); 18 | $table->timestamps(); 19 | }); 20 | } 21 | 22 | /** 23 | * Reverse the migrations. 24 | */ 25 | public function down(): void 26 | { 27 | Schema::dropIfExists('account_types'); 28 | } 29 | }; 30 | -------------------------------------------------------------------------------- /database/migrations/2023_05_16_073133_create_taxes_table.php: -------------------------------------------------------------------------------- 1 | id(); 16 | $table->string('name')->unique(); 17 | $table->integer('rate'); 18 | $table->softDeletes(); 19 | $table->timestamps(); 20 | }); 21 | } 22 | 23 | /** 24 | * Reverse the migrations. 25 | */ 26 | public function down(): void 27 | { 28 | Schema::dropIfExists('taxes'); 29 | } 30 | }; 31 | -------------------------------------------------------------------------------- /database/migrations/2023_05_16_073500_create_with_holdings_table.php: -------------------------------------------------------------------------------- 1 | id(); 16 | $table->string('name')->unique(); 17 | $table->integer('rate'); 18 | $table->softDeletes(); 19 | $table->timestamps(); 20 | }); 21 | } 22 | 23 | /** 24 | * Reverse the migrations. 25 | */ 26 | public function down(): void 27 | { 28 | Schema::dropIfExists('with_holdings'); 29 | } 30 | }; 31 | -------------------------------------------------------------------------------- /database/migrations/2023_05_16_073951_create_accounts_table.php: -------------------------------------------------------------------------------- 1 | id(); 16 | $table->unsignedBigInteger('account_type_id'); 17 | $table->unsignedBigInteger('currency_id'); 18 | $table->string('name')->unique(); 19 | $table->string('description')->nullable(); 20 | $table->decimal('starting_balance', 15, 2)->default(0); 21 | $table->foreign('account_type_id')->references('id')->on('account_types')->onDelete(null); 22 | $table->foreign('currency_id')->references('id')->on('currencies')->onDelete(null); 23 | $table->softDeletes(); 24 | $table->timestamps(); 25 | }); 26 | } 27 | 28 | /** 29 | * Reverse the migrations. 30 | */ 31 | public function down(): void 32 | { 33 | Schema::dropIfExists('accounts'); 34 | } 35 | }; 36 | -------------------------------------------------------------------------------- /database/migrations/2023_05_16_080526_create_units_table.php: -------------------------------------------------------------------------------- 1 | id(); 16 | $table->string('name')->unique(); 17 | $table->string('description')->nullable(); 18 | $table->softDeletes(); 19 | $table->timestamps(); 20 | }); 21 | } 22 | 23 | /** 24 | * Reverse the migrations. 25 | */ 26 | public function down(): void 27 | { 28 | Schema::dropIfExists('units'); 29 | } 30 | }; 31 | -------------------------------------------------------------------------------- /database/migrations/2023_05_16_083113_create_categories_table.php: -------------------------------------------------------------------------------- 1 | id(); 16 | $table->string('name')->unique(); 17 | $table->string('type'); 18 | $table->softDeletes(); 19 | $table->timestamps(); 20 | }); 21 | } 22 | 23 | /** 24 | * Reverse the migrations. 25 | */ 26 | public function down(): void 27 | { 28 | Schema::dropIfExists('categories'); 29 | } 30 | }; 31 | -------------------------------------------------------------------------------- /database/migrations/2023_05_16_093451_create_agreements_table.php: -------------------------------------------------------------------------------- 1 | id(); 16 | $table->unsignedBigInteger('company_id'); 17 | $table->unsignedBigInteger('corporation_id'); 18 | $table->string('name'); 19 | $table->text('content')->nullable(); 20 | $table->timestamp('date')->nullable(); 21 | $table->foreign('company_id')->references('id')->on('companies')->onDelete(null); 22 | $table->foreign('corporation_id')->references('id')->on('corporations')->onDelete(null); 23 | $table->softDeletes(); 24 | $table->timestamps(); 25 | }); 26 | } 27 | 28 | /** 29 | * Reverse the migrations. 30 | */ 31 | public function down(): void 32 | { 33 | Schema::dropIfExists('agreements'); 34 | } 35 | }; 36 | -------------------------------------------------------------------------------- /database/migrations/2023_05_16_101721_create_waybills_table.php: -------------------------------------------------------------------------------- 1 | id(); 16 | $table->unsignedBigInteger('company_id'); 17 | $table->unsignedBigInteger('corporation_id'); 18 | $table->string('number')->unique(); 19 | $table->text('address'); 20 | $table->string('status'); 21 | $table->timestamp('due_date')->nullable(); 22 | $table->timestamp('waybill_date')->nullable(); 23 | $table->text('content')->nullable(); 24 | $table->foreign('company_id')->references('id')->on('companies')->onDelete(null); 25 | $table->foreign('corporation_id')->references('id')->on('corporations')->onDelete(null); 26 | $table->softDeletes(); 27 | $table->timestamps(); 28 | }); 29 | } 30 | 31 | /** 32 | * Reverse the migrations. 33 | */ 34 | public function down(): void 35 | { 36 | Schema::dropIfExists('waybills'); 37 | } 38 | }; 39 | -------------------------------------------------------------------------------- /database/migrations/2023_05_16_111440_create_waybill_items_table.php: -------------------------------------------------------------------------------- 1 | id(); 16 | $table->unsignedBigInteger('waybill_id'); 17 | $table->unsignedBigInteger('material_id'); 18 | $table->integer('quantity'); 19 | $table->integer('price'); 20 | $table->foreign('waybill_id')->references('id')->on('waybills')->onDelete(null); 21 | $table->foreign('material_id')->references('id')->on('materials')->onDelete(null); 22 | $table->timestamps(); 23 | }); 24 | } 25 | 26 | /** 27 | * Reverse the migrations. 28 | */ 29 | public function down(): void 30 | { 31 | Schema::dropIfExists('waybill_items'); 32 | } 33 | }; 34 | -------------------------------------------------------------------------------- /database/migrations/2023_05_16_123922_create_invoice_items_table.php: -------------------------------------------------------------------------------- 1 | id(); 16 | $table->unsignedBigInteger('invoice_id'); 17 | $table->unsignedBigInteger('material_id'); 18 | $table->integer('quantity'); 19 | $table->integer('price'); 20 | $table->foreign('invoice_id')->references('id')->on('invoices')->onDelete(null); 21 | $table->foreign('material_id')->references('id')->on('materials')->onDelete(null); 22 | $table->timestamps(); 23 | }); 24 | } 25 | 26 | /** 27 | * Reverse the migrations. 28 | */ 29 | public function down(): void 30 | { 31 | Schema::dropIfExists('invoice_items'); 32 | } 33 | }; 34 | -------------------------------------------------------------------------------- /database/migrations/2023_05_19_091518_create_invoice_payments_table.php: -------------------------------------------------------------------------------- 1 | id(); 16 | $table->unsignedBigInteger('invoice_id'); 17 | $table->unsignedBigInteger('revenue_id'); 18 | $table->foreign('invoice_id')->references('id')->on('invoices')->onDelete(null); 19 | $table->foreign('revenue_id')->references('id')->on('revenues')->onDelete(null); 20 | $table->timestamps(); 21 | }); 22 | } 23 | 24 | /** 25 | * Reverse the migrations. 26 | */ 27 | public function down(): void 28 | { 29 | Schema::dropIfExists('invoice_payments'); 30 | } 31 | }; 32 | -------------------------------------------------------------------------------- /database/migrations/2023_05_19_144742_create_notifications_table.php: -------------------------------------------------------------------------------- 1 | uuid('id')->primary(); 16 | $table->string('type'); 17 | $table->morphs('notifiable'); 18 | $table->text('data'); 19 | $table->timestamp('read_at')->nullable(); 20 | $table->timestamps(); 21 | }); 22 | } 23 | 24 | /** 25 | * Reverse the migrations. 26 | */ 27 | public function down(): void 28 | { 29 | Schema::dropIfExists('notifications'); 30 | } 31 | }; 32 | -------------------------------------------------------------------------------- /database/migrations/2023_05_24_121321_create_bill_items_table.php: -------------------------------------------------------------------------------- 1 | id(); 16 | $table->unsignedBigInteger('bill_id'); 17 | $table->unsignedBigInteger('material_id'); 18 | $table->integer('quantity'); 19 | $table->integer('price'); 20 | $table->foreign('bill_id')->references('id')->on('bills')->onDelete(null); 21 | $table->foreign('material_id')->references('id')->on('materials')->onDelete(null); 22 | $table->timestamps(); 23 | }); 24 | } 25 | 26 | /** 27 | * Reverse the migrations. 28 | */ 29 | public function down(): void 30 | { 31 | Schema::dropIfExists('bill_items'); 32 | } 33 | }; 34 | -------------------------------------------------------------------------------- /database/migrations/2023_05_24_121341_create_bill_payments_table.php: -------------------------------------------------------------------------------- 1 | id(); 16 | $table->unsignedBigInteger('bill_id'); 17 | $table->unsignedBigInteger('expense_id'); 18 | $table->foreign('bill_id')->references('id')->on('bills')->onDelete(null); 19 | $table->foreign('expense_id')->references('id')->on('expenses')->onDelete(null); 20 | $table->timestamps(); 21 | }); 22 | } 23 | 24 | /** 25 | * Reverse the migrations. 26 | */ 27 | public function down(): void 28 | { 29 | Schema::dropIfExists('bill_payments'); 30 | } 31 | }; 32 | -------------------------------------------------------------------------------- /database/migrations/2023_05_24_132656_create_transactions_table.php: -------------------------------------------------------------------------------- 1 | id(); 16 | $table->unsignedBigInteger('from_account_id'); 17 | $table->unsignedBigInteger('to_account_id'); 18 | $table->decimal('amount', 15, 2); 19 | $table->string('description')->nullable(); 20 | $table->foreign('from_account_id')->references('id')->on('accounts')->onDelete(null); 21 | $table->foreign('to_account_id')->references('id')->on('accounts')->onDelete(null); 22 | $table->timestamp('due_at'); 23 | $table->timestamps(); 24 | }); 25 | } 26 | 27 | /** 28 | * Reverse the migrations. 29 | */ 30 | public function down(): void 31 | { 32 | Schema::dropIfExists('transactions'); 33 | } 34 | }; 35 | -------------------------------------------------------------------------------- /database/migrations/2023_05_27_224508_create_language_lines_table.php: -------------------------------------------------------------------------------- 1 | bigIncrements('id'); 18 | $table->string('group')->index(); 19 | $table->string('key'); 20 | $table->json('text'); 21 | $table->timestamps(); 22 | }); 23 | } 24 | 25 | /** 26 | * Reverse the migrations. 27 | * 28 | * @return void 29 | */ 30 | public function down(): void 31 | { 32 | Schema::dropIfExists('language_lines'); 33 | } 34 | }; 35 | -------------------------------------------------------------------------------- /database/migrations/2023_06_14_224051_create_events_table.php: -------------------------------------------------------------------------------- 1 | id(); 16 | $table->string('title'); 17 | $table->string('description'); 18 | $table->timestamp('start'); 19 | $table->timestamp('end')->nullable(); 20 | $table->string('reminder')->nullable(); 21 | $table->integer('check_id')->nullable(); 22 | $table->timestamps(); 23 | }); 24 | } 25 | 26 | /** 27 | * Reverse the migrations. 28 | */ 29 | public function down(): void 30 | { 31 | Schema::dropIfExists('events'); 32 | } 33 | }; 34 | -------------------------------------------------------------------------------- /database/seeders/AccountSeeder.php: -------------------------------------------------------------------------------- 1 | 1, // 'Bank Account 17 | 'currency_id' => 1, // 'TRY' 18 | 'name' => 'Example Bank Account', 19 | 'starting_balance' => 0, 20 | 'created_at' => now(), 21 | ]); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /database/seeders/AccountTypeSeeder.php: -------------------------------------------------------------------------------- 1 | 'Bank Account', 17 | 'created_at' => now(), 18 | ]); 19 | 20 | \App\Models\AccountType::insert([ 21 | 'name' => 'Credit Card', 22 | 'created_at' => now(), 23 | ]); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /database/seeders/CompanySeeder.php: -------------------------------------------------------------------------------- 1 | 'Example Company', 19 | 'owner' => 'John Doe', 20 | 'tel_number' => '1234567890', 21 | ]); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /database/seeders/CorporationSeeder.php: -------------------------------------------------------------------------------- 1 | 1, // 'TRY 17 | 'type' => 'customer', // 'company 18 | 'name' => 'Example Corporation', 19 | 'tax_number' => '1234567890', 20 | 'tax_office' => 'Example Tax Office', 21 | 'address' => 'Example Address', 22 | 'tel_number' => '1234567890', 23 | 'email' => 'john@example.com', 24 | 'created_at' => now(), 25 | ]); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /database/seeders/DatabaseSeeder.php: -------------------------------------------------------------------------------- 1 | create(); 17 | 18 | \App\Models\User::factory()->create([ 19 | 'name' => 'Super Admin', 20 | 'email' => 'superadmin@example.com', 21 | 'email_verified_at' => now(), 22 | 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password 23 | 'remember_token' => Str::random(10), 24 | ]); 25 | 26 | $this->call([ 27 | CurrencySeeder::class, 28 | CompanySeeder::class, 29 | AccountTypeSeeder::class, 30 | AccountSeeder::class, 31 | CategorySeeder::class, 32 | TaxSeeder::class, 33 | WithHoldingSeeder::class, 34 | UnitSeeder::class, 35 | CorporationSeeder::class, 36 | MaterialSeeder::class, 37 | ]); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /database/seeders/MaterialSeeder.php: -------------------------------------------------------------------------------- 1 | 1, // 'Kilogram 17 | 'tax_id' => 1, // 'VAT (Value Added Tax) - 18% 18 | 'currency_id' => 1, // 'TRY 19 | 'name' => 'Example Material', 20 | 'code' => 'MTR0001', 21 | 'price' => 20, 22 | 'category' => 'construction', 23 | 'type' => 'procurement', 24 | 'description' => 'Example Description', 25 | 'created_at' => now(), 26 | ]); 27 | 28 | \App\Models\Material::insert([ 29 | 'unit_id' => 1, // 'Kilogram 30 | 'tax_id' => 1, // 'VAT (Value Added Tax) - 18% 31 | 'currency_id' => 1, // 'TRY 32 | 'name' => 'Example Material 2', 33 | 'code' => 'MTR0002', 34 | 'price' => 30, 35 | 'category' => 'construction', 36 | 'type' => 'procurement', 37 | 'description' => 'Example Description 2', 38 | 'created_at' => now(), 39 | ]); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /database/seeders/TaxSeeder.php: -------------------------------------------------------------------------------- 1 | 'VAT (Value Added Tax) - 18%', 17 | 'rate' => 18, 18 | 'created_at' => now(), 19 | ]); 20 | 21 | \App\Models\Tax::insert([ 22 | 'name' => 'GST (Goods and Services Tax) - 10%', 23 | 'rate' => 10, 24 | 'created_at' => now(), 25 | ]); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /database/seeders/UnitSeeder.php: -------------------------------------------------------------------------------- 1 | 'Kilogram', 17 | 'created_at' => now(), 18 | ]); 19 | 20 | \App\Models\Unit::insert([ 21 | 'name' => 'Gram', 22 | 'created_at' => now(), 23 | ]); 24 | 25 | \App\Models\Unit::insert([ 26 | 'name' => 'Piece', 27 | 'created_at' => now(), 28 | ]); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /database/seeders/WithHoldingSeeder.php: -------------------------------------------------------------------------------- 1 | 'WithHolding 1', 17 | 'rate' => 20, 18 | 'created_at' => now(), 19 | ]); 20 | 21 | \App\Models\WithHolding::insert([ 22 | 'name' => 'WithHolding 2', 23 | 'rate' => 35, 24 | 'created_at' => now(), 25 | ]); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /lang/en/account_types.php: -------------------------------------------------------------------------------- 1 | "Account Type", 5 | "account_types" => "Account Types", 6 | "account_type_name" => "Account Type Name", 7 | ]; 8 | -------------------------------------------------------------------------------- /lang/en/accounts.php: -------------------------------------------------------------------------------- 1 | "Account", 5 | "accounts" => "Accounts", 6 | "account_name" => "Account Name", 7 | "account_number" => "Account Number", 8 | "account_type" => "Account Type", 9 | "add_new_account" => "Add New Account", 10 | "edit_account" => "Edit Account", 11 | "currency" => "Currency", 12 | "starting_balance" => "Start Balance", 13 | "description" => "Description", 14 | "balance" => "Balance", 15 | "detail" => "Detail", 16 | ]; 17 | -------------------------------------------------------------------------------- /lang/en/agreements.php: -------------------------------------------------------------------------------- 1 | "Agreement", 5 | "agreements" => "Agreements", 6 | "agreement_name" => "Agreement Name", 7 | "agreement_content" => "Agreement Content", 8 | "company_name" => "Company Name", 9 | "date" => "Date", 10 | "corporation" => "Corporation", 11 | "files" => "Files", 12 | ]; 13 | -------------------------------------------------------------------------------- /lang/en/auth.php: -------------------------------------------------------------------------------- 1 | 'These credentials do not match our records.', 17 | 'password' => 'The provided password is incorrect.', 18 | 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', 19 | 20 | ]; 21 | -------------------------------------------------------------------------------- /lang/en/bills.php: -------------------------------------------------------------------------------- 1 | "Bill", 5 | "bills" => "Bills", 6 | "bill_number" => "Bill Number", 7 | "issue_date" => "Issue Date", 8 | "company_name" => "Company Name", 9 | "corporation" => "Corporation", 10 | "waybill" => "Waybill", 11 | "withholding_tax" => "Withholding Tax", 12 | "status" => "Status", 13 | "discount" => "Discount", 14 | "notes" => "Notes", 15 | "items" => "Items", 16 | "payments" => "Payments", 17 | "total" => "Total", 18 | "material" => "Material", 19 | "quantity" => "Quantity", 20 | "price" => "Price", 21 | "expense" => "Expense", 22 | "delivered" => "Delivered", 23 | "pending" => "Pending", 24 | "cancelled" => "Cancelled", 25 | ]; 26 | -------------------------------------------------------------------------------- /lang/en/categories.php: -------------------------------------------------------------------------------- 1 | "Category", 5 | "categories" => "Categories", 6 | "category_name" => "Category Name", 7 | "category_type" => "Category Type", 8 | "income" => "Income", 9 | "expense" => "Expense", 10 | ]; 11 | -------------------------------------------------------------------------------- /lang/en/checks.php: -------------------------------------------------------------------------------- 1 | "Check", 5 | "checks" => "Checks", 6 | "due_date" => "Due Date", 7 | "issue_date" => "Issue Date", 8 | "number" => "Number", 9 | "amount" => "Amount", 10 | "description" => "Description", 11 | "company" => "Company", 12 | "corporation" => "Corporation", 13 | "account" => "Account", 14 | "type" => "Type", 15 | "purchase" => "Check In", 16 | "sale" => "Check Out", 17 | "status" => "Status", 18 | "pending" => "Pending", 19 | "paid" => "Paid", 20 | "cancelled" => "Cancelled", 21 | "paid_date" => "Paid Date", 22 | "check_in" => "Check In", 23 | "check_out" => "Check Out", 24 | "image" => "Check Image", 25 | ]; 26 | -------------------------------------------------------------------------------- /lang/en/companies.php: -------------------------------------------------------------------------------- 1 | "Company", 5 | "companies" => "Companies", 6 | "company_name" => "Company name", 7 | "company_owner" => "Company owner", 8 | "tel_number" => "Tel. number", 9 | "gsm_number" => "GSM number", 10 | "fax_number" => "Fax number", 11 | "email" => "Email", 12 | "address" => "Address", 13 | "tax_office" => "Tax office", 14 | "tax_number" => "Tax number", 15 | "logo" => "Logo", 16 | ]; 17 | -------------------------------------------------------------------------------- /lang/en/corporations.php: -------------------------------------------------------------------------------- 1 | "Corporation", 5 | "corporations" => "Corporations", 6 | "corporation_name" => "Corporation name", 7 | "corporation_owner" => "Corporation owner", 8 | "tel_number" => "Tel. number", 9 | "gsm_number" => "GSM number", 10 | "fax_number" => "Fax number", 11 | "email" => "Email", 12 | "address" => "Address", 13 | "tax_office" => "Tax office", 14 | "tax_number" => "Tax number", 15 | "type" => "Type", 16 | "customer" => "Customer", 17 | "vendor" => "Vendor", 18 | "currency" => "Currency", 19 | "detail" => "Detail", 20 | "total_formal_revenue" => "Formal Revenue", 21 | "total_informal_revenue" => "Informal Revenue", 22 | "total_formal_expense" => "Formal Expense", 23 | "total_informal_expense" => "Informal Expense", 24 | "invoice_total" => "Invoice Total", 25 | "bill_total" => "Bill Total", 26 | ]; 27 | -------------------------------------------------------------------------------- /lang/en/currencies.php: -------------------------------------------------------------------------------- 1 | "Currency", 5 | "currencies" => "Currencies", 6 | "name" => "Name", 7 | "code" => "Code", 8 | "symbol" => "Symbol", 9 | "position" => "Symbol Position", 10 | "left" => "Left", 11 | "right" => "Right", 12 | "select_position" => "Select position", 13 | ]; 14 | -------------------------------------------------------------------------------- /lang/en/events.php: -------------------------------------------------------------------------------- 1 | 'Events', 5 | 'event' => 'Event', 6 | 'title' => 'Title', 7 | 'description' => 'Description', 8 | 'start' => 'Start Date', 9 | 'end' => 'End Date', 10 | 'check' => 'Check Number', 11 | 'reminder' => 'Reminder', 12 | ]; 13 | -------------------------------------------------------------------------------- /lang/en/expenses.php: -------------------------------------------------------------------------------- 1 | "Expense", 5 | "expenses" => "Expenses", 6 | "account_name" => "Account", 7 | "company_name" => "Company Name", 8 | "corporation" => "Corporation", 9 | "category" => "Category", 10 | "description" => "Description", 11 | "amount" => "Amount", 12 | "type" => "Type", 13 | "due_at" => "Due Date", 14 | "select_type" => "Select Type", 15 | "select_category" => "Select Category", 16 | "select_corporation" => "Select Corporation", 17 | "select_account" => "Select Account", 18 | "bill_number" => "Bill Number", 19 | "formal" => "Formal", 20 | "informal" => "Informal", 21 | "has_file" => "Has File?", 22 | ]; 23 | -------------------------------------------------------------------------------- /lang/en/general.php: -------------------------------------------------------------------------------- 1 | 'Email address', 5 | "password" => "Password", 6 | "remember_me" => "Remember me", 7 | "go_back" => "Go Back", 8 | "change_company" => "Change Company (:company)", 9 | "from_date" => "From Date", 10 | "to_date" => "To Date", 11 | "view" => "View", 12 | "min_amount" => "Min Amount", 13 | "max_amount" => "Max Amount", 14 | "company_change" => "Change Company", 15 | "submit" => "Submit", 16 | "continue" => "Continue", 17 | "selected_company" => "Selected Company", 18 | "settings" => "Settings", 19 | "download" => "Download", 20 | "page_orientation" => "Page Orientation", 21 | "image" => "Image", 22 | "file" => "File", 23 | "save" => "Save", 24 | "saved" => "Saved", 25 | ]; 26 | -------------------------------------------------------------------------------- /lang/en/invoices.php: -------------------------------------------------------------------------------- 1 | "Invoice", 5 | "invoices" => "Invoices", 6 | "invoice_number" => "Invoice Number", 7 | "issue_date" => "Issue Date", 8 | "company_name" => "Company Name", 9 | "corporation" => "Corporation", 10 | "waybill" => "Waybill", 11 | "withholding_tax" => "Withholding Tax", 12 | "status" => "Status", 13 | "discount" => "Discount", 14 | "notes" => "Notes", 15 | "items" => "Items", 16 | "payments" => "Payments", 17 | "total" => "Total", 18 | "material" => "Material", 19 | "quantity" => "Quantity", 20 | "price" => "Price", 21 | "revenue" => "Revenue", 22 | "delivered" => "Delivered", 23 | "pending" => "Pending", 24 | "cancelled" => "Cancelled", 25 | ]; 26 | -------------------------------------------------------------------------------- /lang/en/materials.php: -------------------------------------------------------------------------------- 1 | "Material", 5 | "materials" => "Materials", 6 | "name" => "Name", 7 | "code" => "Code", 8 | "price" => "Price", 9 | "category" => "Category", 10 | "unit" => "Unit", 11 | "tax" => "Tax", 12 | "currency" => "Currency", 13 | "type" => "Type", 14 | "description" => "Description", 15 | "construction" => "Construction", 16 | "electrical" => "Electrical", 17 | "plumbing" => "Plumbing", 18 | "service" => "Service", 19 | "procurement" => "Procurement", 20 | "service_procurement" => "Service & Procurement", 21 | ]; 22 | -------------------------------------------------------------------------------- /lang/en/pagination.php: -------------------------------------------------------------------------------- 1 | '« Previous', 17 | 'next' => 'Next »', 18 | 19 | ]; 20 | -------------------------------------------------------------------------------- /lang/en/passwords.php: -------------------------------------------------------------------------------- 1 | 'Your password has been reset.', 17 | 'sent' => 'We have emailed your password reset link.', 18 | 'throttled' => 'Please wait before retrying.', 19 | 'token' => 'This password reset token is invalid.', 20 | 'user' => "We can't find a user with that email address.", 21 | 22 | ]; 23 | -------------------------------------------------------------------------------- /lang/en/profile.php: -------------------------------------------------------------------------------- 1 | 'Profile', 5 | 'profile_information' => 'Profile Information', 6 | 'update_form_description' => 'Update your account\'s profile information and email address.', 7 | 'name' => 'Name', 8 | 'email' => 'Email', 9 | 'unverified_email' => 'Your email address is unverified.', 10 | 'send_verification_email' => 'Click here to re-send the verification email.', 11 | 'verification_sent' => 'A new verification link has been sent to your email address.', 12 | 'current_password' => 'Current Password', 13 | 'new_password' => 'New Password', 14 | 'confirm_password' => 'Confirm Password', 15 | 'update_password' => 'Update Password', 16 | 'update_password_description' => 'Ensure your account is using a long, random password to stay secure.', 17 | ]; 18 | -------------------------------------------------------------------------------- /lang/en/revenues.php: -------------------------------------------------------------------------------- 1 | "Revenue", 5 | "revenues" => "Revenues", 6 | "account_name" => "Account", 7 | "company_name" => "Company Name", 8 | "corporation" => "Corporation", 9 | "category" => "Category", 10 | "description" => "Description", 11 | "amount" => "Amount", 12 | "type" => "Type", 13 | "due_at" => "Due Date", 14 | "select_type" => "Select Type", 15 | "select_category" => "Select Category", 16 | "select_corporation" => "Select Corporation", 17 | "select_account" => "Select Account", 18 | "invoice_number" => "Invoice Number", 19 | "formal" => "Formal", 20 | "informal" => "Informal", 21 | ]; 22 | -------------------------------------------------------------------------------- /lang/en/taxes.php: -------------------------------------------------------------------------------- 1 | "Tax", 5 | "taxes" => "Taxes", 6 | "name" => "Name", 7 | "rate" => "Rate", 8 | ]; 9 | -------------------------------------------------------------------------------- /lang/en/transactions.php: -------------------------------------------------------------------------------- 1 | "Transaction", 5 | "transactions" => "Transactions", 6 | "due_at" => "Due Date", 7 | "amount" => "Amount", 8 | "from_account" => "Sender Account", 9 | "to_account" => "Receiver Account", 10 | "description" => "Description", 11 | "select_account" => "Select Account", 12 | ]; 13 | -------------------------------------------------------------------------------- /lang/en/units.php: -------------------------------------------------------------------------------- 1 | "Unit", 5 | "units" => "Units", 6 | "name" => "Name", 7 | "description" => "Description", 8 | ]; 9 | -------------------------------------------------------------------------------- /lang/en/waybills.php: -------------------------------------------------------------------------------- 1 | "Waybill", 5 | "waybills" => "Waybills", 6 | "waybill_number" => "Waybill Number", 7 | "waybill_date" => "Waybill Date", 8 | "due_date" => "Due Date", 9 | "company" => "Company", 10 | "corporation" => "Corporation", 11 | "address" => "Address", 12 | "content" => "Content", 13 | "status" => "Status", 14 | "pending" => "Pending", 15 | "delivered" => "Delivered", 16 | "cancelled" => "Cancelled", 17 | "waybill_items" => "Waybill Items", 18 | "material" => "Material", 19 | "quantity" => "Quantity", 20 | "price" => "Price", 21 | "items" => "Items", 22 | ]; 23 | -------------------------------------------------------------------------------- /lang/en/withholdings.php: -------------------------------------------------------------------------------- 1 | "Withholding", 5 | "withholdings" => "Withholdings", 6 | "name" => "Name", 7 | "rate" => "Rate", 8 | ]; 9 | -------------------------------------------------------------------------------- /lang/tr/account_types.php: -------------------------------------------------------------------------------- 1 | "Hesap Türü", 5 | "account_types" => "Hesap Türleri", 6 | "account_type_name" => "Hesap Türü Adı", 7 | ]; 8 | -------------------------------------------------------------------------------- /lang/tr/accounts.php: -------------------------------------------------------------------------------- 1 | "Hesap", 5 | "accounts" => "Hesaplar", 6 | "account_name" => "Hesap Adı", 7 | "account_number" => "Hesap Numarası", 8 | "account_type" => "Hesap Türü", 9 | "add_new_account" => "Yeni Hesap Ekle", 10 | "edit_account" => "Hesabı Düzenle", 11 | "currency" => "Para Birimi", 12 | "starting_balance" => "Başlangıç Bakiyesi", 13 | "description" => "Açıklama", 14 | "balance" => "Bakiye", 15 | "detail" => "Detay", 16 | ]; 17 | -------------------------------------------------------------------------------- /lang/tr/agreements.php: -------------------------------------------------------------------------------- 1 | "Sözleşme", 5 | "agreements" => "Sözleşmeler", 6 | "agreement_name" => "Sözleşme Adı", 7 | "agreement_content" => "Sözleşme İçeriği", 8 | "company_name" => "Şirket Adı", 9 | "date" => "Tarih", 10 | "corporation" => "Firma", 11 | "files" => "Dosyalar", 12 | ]; 13 | -------------------------------------------------------------------------------- /lang/tr/auth.php: -------------------------------------------------------------------------------- 1 | 'Girilmiş olan kullanıcı verileri sistemdekiler ile eşleşmemektedir.', 17 | 'password' => 'Belirtilen şifre yanlış.', 18 | 'throttle' => 'Çok fazla oturum açma girişiminde bulundunuz. Lütfen :seconds saniye sonra tekrar deneyiz.', 19 | ]; 20 | -------------------------------------------------------------------------------- /lang/tr/bills.php: -------------------------------------------------------------------------------- 1 | "Alış Faturası", 5 | "bills" => "Alış Faturaları", 6 | "bill_number" => "Alış Faturası Numarası", 7 | "issue_date" => "Alış Faturası Tarihi", 8 | "company_name" => "Şirket Adı", 9 | "corporation" => "Firma", 10 | "waybill" => "İrsaliye", 11 | "withholding_tax" => "Tevkifat", 12 | "status" => "Durum", 13 | "discount" => "İndirim", 14 | "notes" => "Notlar", 15 | "items" => "Ürünler", 16 | "payments" => "Ödemeler", 17 | "total" => "Toplam", 18 | "material" => "Malzeme", 19 | "quantity" => "Miktar", 20 | "price" => "Fiyat", 21 | "expense" => "Yapılan Ödemeler", 22 | "delivered" => "Teslim Edildi", 23 | "pending" => "Beklemede", 24 | "cancelled" => "İptal Edildi", 25 | ]; 26 | -------------------------------------------------------------------------------- /lang/tr/categories.php: -------------------------------------------------------------------------------- 1 | "Kategori", 5 | "categories" => "Kategoriler", 6 | "category_name" => "Kategori Adı", 7 | "category_type" => "Kategori Türü", 8 | "income" => "Gelir", 9 | "expense" => "Gider", 10 | ]; 11 | -------------------------------------------------------------------------------- /lang/tr/checks.php: -------------------------------------------------------------------------------- 1 | "Çek", 5 | "checks" => "Çekler", 6 | "due_date" => "Vade Tarihi", 7 | "issue_date" => "Kesim Tarihi", 8 | "number" => "Numara", 9 | "amount" => "Tutar", 10 | "description" => "Açıklama", 11 | "company" => "Şirket", 12 | "corporation" => "Firma", 13 | "account" => "Hesap", 14 | "type" => "Türü", 15 | "purchase" => "Çek Girişi", 16 | "sale" => "Çek Çıkışı", 17 | "status" => "Durumu", 18 | "pending" => "Bekliyor", 19 | "paid" => "Ödendi", 20 | "canceled" => "İptal", 21 | "paid_date" => "Ödeme Tarihi", 22 | "check_in" => "Alınan Çekler", 23 | "check_out" => "Verilen Çekler", 24 | "image" => "Çek Görüntüsü", 25 | ]; 26 | -------------------------------------------------------------------------------- /lang/tr/companies.php: -------------------------------------------------------------------------------- 1 | "Şirket", 5 | "companies" => "Şirketler", 6 | "company_name" => "Şirket adı", 7 | "company_owner" => "Şirket sahibi", 8 | "tel_number" => "Tel. numarası", 9 | "gsm_number" => "GSM numarası", 10 | "fax_number" => "Fax numarası", 11 | "email" => "Email", 12 | "address" => "Adres", 13 | "tax_office" => "Vergi dairesi", 14 | "tax_number" => "Vergi numarası", 15 | "logo" => "Logo", 16 | ]; 17 | -------------------------------------------------------------------------------- /lang/tr/corporations.php: -------------------------------------------------------------------------------- 1 | "Firma", 5 | "corporations" => "Firmalar", 6 | "corporation_name" => "Firma adı", 7 | "corporation_owner" => "Firma sahibi", 8 | "tel_number" => "Tel. numarası", 9 | "gsm_number" => "GSM numarası", 10 | "fax_number" => "Fax numarası", 11 | "email" => "Email", 12 | "address" => "Adres", 13 | "tax_office" => "Vergi dairesi", 14 | "tax_number" => "Vergi numarası", 15 | "type" => "Türü", 16 | "customer" => "Müşteri", 17 | "vendor" => "Tedarikçi", 18 | "currency" => "Para birimi", 19 | "detail" => "Detay", 20 | "total_formal_revenue" => "Alınan Resmi EFT/Havale", 21 | "total_informal_revenue" => "Alınan Gayri Resmi EFT/Havale", 22 | "total_formal_expense" => "Yapılan Resmi EFT/Havale", 23 | "total_informal_expense" => "Yapılan Gayri Resmi EFT/Havale", 24 | "invoice_total" => "Alınan Fatura Toplamı", 25 | "bill_total" => "Verilen Fatura Toplamı", 26 | ]; 27 | -------------------------------------------------------------------------------- /lang/tr/currencies.php: -------------------------------------------------------------------------------- 1 | "Para Birimi", 5 | "currencies" => "Para Birimleri", 6 | "name" => "Adı", 7 | "code" => "Kodu", 8 | "symbol" => "Sembol", 9 | "position" => "Sembol Konumu", 10 | "left" => "Sol", 11 | "right" => "Sağ", 12 | "select_position" => "Konum seçiniz", 13 | ]; 14 | -------------------------------------------------------------------------------- /lang/tr/events.php: -------------------------------------------------------------------------------- 1 | 'Etkinlikler', 5 | 'event' => 'Etkinlik', 6 | 'title' => 'Başlık', 7 | 'description' => 'Açıklama', 8 | 'start' => 'Başlangıç Tarihi', 9 | 'end' => 'Bitiş Tarihi', 10 | 'check' => 'Çek Numarası', 11 | 'reminder' => 'Hatırlatıcı Etkinleştir', 12 | ]; 13 | -------------------------------------------------------------------------------- /lang/tr/expenses.php: -------------------------------------------------------------------------------- 1 | "Gider", 5 | "expenses" => "Giderler", 6 | "account_name" => "Hesap Adı", 7 | "company_name" => "Şirket Adı", 8 | "corporation" => "Firma", 9 | "category" => "Kategori", 10 | "description" => "Açıklama", 11 | "amount" => "Tutar", 12 | "type" => "Türü", 13 | "due_at" => "Ödeme Tarihi", 14 | "select_type" => "Tür Seçiniz", 15 | "select_category" => "Kategori Seçiniz", 16 | "select_corporation" => "Firma Seçiniz", 17 | "select_account" => "Hesap Seçiniz", 18 | "bill_number" => "Fatura Numarası", 19 | "formal" => "Resmi", 20 | "informal" => "Gayri Resmi", 21 | "has_file" => "Dosya Var Mı?", 22 | ]; 23 | -------------------------------------------------------------------------------- /lang/tr/general.php: -------------------------------------------------------------------------------- 1 | "Email adresi", 5 | "password" => "Parola", 6 | "remember_me" => "Beni hatırla", 7 | "go_back" => "Geri Dön", 8 | "change_company" => "Şirket Değiştir (:company)", 9 | "from_date" => "Başlangıç Tarihi", 10 | "to_date" => "Bitiş Tarihi", 11 | "view" => "Görüntüle", 12 | "min_amount" => "Min Tutar", 13 | "max_amount" => "Max Tutar", 14 | "company_change" => "Şirket Değiştir", 15 | "submit" => "Gönder", 16 | "continue" => "Devam Et", 17 | "selected_company" => "Seçili Şirket", 18 | "settings" => "Ayarlar", 19 | "download" => "İndir", 20 | "page_orientation" => "Sayfa Yönü", 21 | "image" => "Görsel", 22 | "file" => "Dosya", 23 | "save" => "Kaydet", 24 | "saved" => "Kaydedildi", 25 | ]; 26 | -------------------------------------------------------------------------------- /lang/tr/invoices.php: -------------------------------------------------------------------------------- 1 | "Satış Faturası", 5 | "invoices" => "Satış Faturaları", 6 | "invoice_number" => "Satış Faturası Numarası", 7 | "issue_date" => "Satış Faturası Tarihi", 8 | "company_name" => "Şirket Adı", 9 | "corporation" => "Firma", 10 | "waybill" => "İrsaliye", 11 | "withholding_tax" => "Tevkifat", 12 | "status" => "Durum", 13 | "discount" => "İndirim", 14 | "notes" => "Notlar", 15 | "items" => "Ürünler", 16 | "payments" => "Ödemeler", 17 | "total" => "Toplam", 18 | "material" => "Malzeme", 19 | "quantity" => "Miktar", 20 | "price" => "Fiyat", 21 | "revenue" => "Alınan Ödemeler", 22 | "delivered" => "Teslim Edildi", 23 | "pending" => "Beklemede", 24 | "cancelled" => "İptal Edildi", 25 | ]; 26 | -------------------------------------------------------------------------------- /lang/tr/materials.php: -------------------------------------------------------------------------------- 1 | "Ürün & Hizmet", 5 | "materials" => "Ürün & Hizmetler", 6 | "name" => "Ürün & Hizmet Adı", 7 | "code" => "Ürün & Hizmet Kodu", 8 | "price" => "Fiyat", 9 | "category" => "Kategori", 10 | "unit" => "Birim", 11 | "tax" => "Vergi", 12 | "currency" => "Para Birimi", 13 | "type" => "Türü", 14 | "description" => "Açıklama", 15 | "construction" => "İnşaat", 16 | "electrical" => "Elektrik", 17 | "plumbing" => "Tesisat", 18 | "service" => "İşçilik", 19 | "procurement" => "Malzeme", 20 | "service_procurement" => "İşçilik & Malzeme", 21 | ]; 22 | -------------------------------------------------------------------------------- /lang/tr/pagination.php: -------------------------------------------------------------------------------- 1 | '« Önceki', 17 | 'next' => 'Sonraki »', 18 | ]; 19 | -------------------------------------------------------------------------------- /lang/tr/passwords.php: -------------------------------------------------------------------------------- 1 | 'Parolanız sıfırlandı!', 16 | 'sent' => 'Parola sıfırlama bağlantınız e-posta ile gönderildi!', 17 | 'throttled' => 'Lütfen tekrar denemeden önce bekleyin.', 18 | 'token' => 'Parola sıfırlama adresi/kodu geçersiz.', 19 | 'user' => 'Bu e-posta adresi ile kayıtlı bir üye bulunmuyor.', 20 | 21 | ]; 22 | -------------------------------------------------------------------------------- /lang/tr/profile.php: -------------------------------------------------------------------------------- 1 | 'Profil', 5 | 'profile_information' => 'Profil Bilgileri', 6 | 'update_form_description' => 'Hesabınızın profil bilgilerini ve e-posta adresini güncelleyin.', 7 | 'name' => 'İsim Soyisim', 8 | 'email' => 'E-posta', 9 | 'unverified_email' => 'E-posta adresiniz doğrulanmamış.', 10 | 'send_verification_email' => 'Doğrulama e-postasını tekrar göndermek için buraya tıklayın.', 11 | 'verification_sent' => 'Yeni bir doğrulama bağlantısı e-posta adresinize gönderildi.', 12 | 'current_password' => 'Mevcut Şifre', 13 | 'new_password' => 'Yeni Şifre', 14 | 'confirm_password' => 'Şifreyi Onayla', 15 | 'update_password' => 'Şifreyi Güncelle', 16 | 'update_password_description' => 'Hesabınızın güvende kalması için uzun ve rastgele bir şifre kullandığından emin olun.', 17 | ]; 18 | -------------------------------------------------------------------------------- /lang/tr/revenues.php: -------------------------------------------------------------------------------- 1 | "Gelir", 5 | "revenues" => "Gelirler", 6 | "account_name" => "Hesap Adı", 7 | "company_name" => "Şirket Adı", 8 | "corporation" => "Firma", 9 | "category" => "Kategori", 10 | "description" => "Açıklama", 11 | "amount" => "Tutar", 12 | "type" => "Türü", 13 | "due_at" => "Ödeme Tarihi", 14 | "select_type" => "Tür Seçiniz", 15 | "select_category" => "Kategori Seçiniz", 16 | "select_corporation" => "Firma Seçiniz", 17 | "select_account" => "Hesap Seçiniz", 18 | "invoice_number" => "Fatura Numarası", 19 | "formal" => "Resmi", 20 | "informal" => "Gayri Resmi", 21 | ]; 22 | -------------------------------------------------------------------------------- /lang/tr/taxes.php: -------------------------------------------------------------------------------- 1 | "Vergi", 5 | "taxes" => "Vergiler", 6 | "name" => "Vergi Adı", 7 | "rate" => "Vergi Oranı", 8 | ]; 9 | -------------------------------------------------------------------------------- /lang/tr/transactions.php: -------------------------------------------------------------------------------- 1 | "Transfer", 5 | "transactions" => "Transferler", 6 | "due_at" => "Ödeme Tarihi", 7 | "amount" => "Tutar", 8 | "from_account" => "Gönderen Hesap", 9 | "to_account" => "Alıcı Hesap", 10 | "description" => "Açıklama", 11 | "select_account" => "Hesap Seçiniz", 12 | ]; 13 | -------------------------------------------------------------------------------- /lang/tr/units.php: -------------------------------------------------------------------------------- 1 | "Birim", 5 | "units" => "Birimler", 6 | "name" => "Birim Adı", 7 | "description" => "Açıklama", 8 | ]; 9 | -------------------------------------------------------------------------------- /lang/tr/waybills.php: -------------------------------------------------------------------------------- 1 | "İrsaliye", 5 | "waybills" => "İrsaliyeler", 6 | "waybill_number" => "İrsaliye Numarası", 7 | "waybill_date" => "İrsaliye Tarihi", 8 | "due_date" => "Vade Tarihi", 9 | "company" => "Şirket", 10 | "corporation" => "Firma", 11 | "address" => "Adres", 12 | "content" => "İçerik", 13 | "status" => "Durum", 14 | "pending" => "Beklemede", 15 | "delivered" => "Teslim Edildi", 16 | "cancelled" => "İptal Edildi", 17 | "items" => "Ürünler", 18 | "material" => "Malzeme", 19 | "quantity" => "Miktar", 20 | "price" => "Fiyat", 21 | "items" => "Ürünler", 22 | ]; 23 | -------------------------------------------------------------------------------- /lang/tr/withholdings.php: -------------------------------------------------------------------------------- 1 | "Tevkifat", 5 | "withholdings" => "Tevkifatlar", 6 | "name" => "Tevkifat Adı", 7 | "rate" => "Oran", 8 | ]; 9 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "type": "module", 4 | "scripts": { 5 | "dev": "vite", 6 | "build": "vite build" 7 | }, 8 | "devDependencies": { 9 | "@tailwindcss/forms": "^0.5.3", 10 | "@tailwindcss/typography": "^0.5.9", 11 | "alpinejs": "^3.12.1", 12 | "autoprefixer": "^10.4.14", 13 | "laravel-vite-plugin": "^0.7.5", 14 | "postcss": "^8.4.31", 15 | "tailwindcss": "^3.3.2", 16 | "vite": "^4.5.5" 17 | }, 18 | "dependencies": { 19 | "@awcodes/alpine-floating-ui": "^3.5.0" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | ./tests/Unit 10 | 11 | 12 | ./tests/Feature 13 | 14 | 15 | 16 | 17 | ./app 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /public/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | 3 | Options -MultiViews -Indexes 4 | 5 | 6 | RewriteEngine On 7 | 8 | # Handle Authorization Header 9 | RewriteCond %{HTTP:Authorization} . 10 | RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 11 | 12 | # Redirect Trailing Slashes If Not A Folder... 13 | RewriteCond %{REQUEST_FILENAME} !-d 14 | RewriteCond %{REQUEST_URI} (.+)/$ 15 | RewriteRule ^ %1 [L,R=301] 16 | 17 | # Send Requests To Front Controller... 18 | RewriteCond %{REQUEST_FILENAME} !-d 19 | RewriteCond %{REQUEST_FILENAME} !-f 20 | RewriteRule ^ index.php [L] 21 | 22 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afsakar/payvel/06a3f85e5e9257358c155f3cd40d7b07aa0af8d1/public/favicon.ico -------------------------------------------------------------------------------- /public/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afsakar/payvel/06a3f85e5e9257358c155f3cd40d7b07aa0af8d1/public/images/favicon.png -------------------------------------------------------------------------------- /public/images/screenshots/payvel-sc-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afsakar/payvel/06a3f85e5e9257358c155f3cd40d7b07aa0af8d1/public/images/screenshots/payvel-sc-1.png -------------------------------------------------------------------------------- /public/images/screenshots/payvel-sc-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afsakar/payvel/06a3f85e5e9257358c155f3cd40d7b07aa0af8d1/public/images/screenshots/payvel-sc-10.png -------------------------------------------------------------------------------- /public/images/screenshots/payvel-sc-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afsakar/payvel/06a3f85e5e9257358c155f3cd40d7b07aa0af8d1/public/images/screenshots/payvel-sc-2.png -------------------------------------------------------------------------------- /public/images/screenshots/payvel-sc-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afsakar/payvel/06a3f85e5e9257358c155f3cd40d7b07aa0af8d1/public/images/screenshots/payvel-sc-3.png -------------------------------------------------------------------------------- /public/images/screenshots/payvel-sc-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afsakar/payvel/06a3f85e5e9257358c155f3cd40d7b07aa0af8d1/public/images/screenshots/payvel-sc-4.png -------------------------------------------------------------------------------- /public/images/screenshots/payvel-sc-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afsakar/payvel/06a3f85e5e9257358c155f3cd40d7b07aa0af8d1/public/images/screenshots/payvel-sc-5.png -------------------------------------------------------------------------------- /public/images/screenshots/payvel-sc-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afsakar/payvel/06a3f85e5e9257358c155f3cd40d7b07aa0af8d1/public/images/screenshots/payvel-sc-6.png -------------------------------------------------------------------------------- /public/images/screenshots/payvel-sc-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afsakar/payvel/06a3f85e5e9257358c155f3cd40d7b07aa0af8d1/public/images/screenshots/payvel-sc-7.png -------------------------------------------------------------------------------- /public/images/screenshots/payvel-sc-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afsakar/payvel/06a3f85e5e9257358c155f3cd40d7b07aa0af8d1/public/images/screenshots/payvel-sc-8.png -------------------------------------------------------------------------------- /public/images/screenshots/payvel-sc-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afsakar/payvel/06a3f85e5e9257358c155f3cd40d7b07aa0af8d1/public/images/screenshots/payvel-sc-9.png -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /resources/css/app.css: -------------------------------------------------------------------------------- 1 | @import '../../vendor/filament/forms/dist/module.esm.css'; 2 | @import '../../vendor/alperenersoy/filament-export/resources/css/filament-export.css'; 3 | @import '../../vendor/saade/filament-fullcalendar/resources/css/filament-fullcalendar.css'; 4 | 5 | @tailwind base; 6 | @tailwind components; 7 | @tailwind utilities; 8 | -------------------------------------------------------------------------------- /resources/js/app.js: -------------------------------------------------------------------------------- 1 | import Alpine from 'alpinejs' 2 | import FormsAlpinePlugin from '../../vendor/filament/forms/dist/module.esm' 3 | import NotificationsAlpinePlugin from '../../vendor/filament/notifications/dist/module.esm' 4 | import "../../vendor/alperenersoy/filament-export/resources/js/filament-export.js"; 5 | 6 | Alpine.plugin(FormsAlpinePlugin) 7 | Alpine.plugin(NotificationsAlpinePlugin) 8 | 9 | window.Alpine = Alpine 10 | 11 | Alpine.start() 12 | -------------------------------------------------------------------------------- /resources/views/auth/confirm-password.blade.php: -------------------------------------------------------------------------------- 1 | 2 |
3 | {{ __('This is a secure area of the application. Please confirm your password before continuing.') }} 4 |
5 | 6 |
7 | @csrf 8 | 9 | 10 |
11 | 12 | 13 | 17 | 18 | 19 |
20 | 21 |
22 | 23 | {{ __('Confirm') }} 24 | 25 |
26 |
27 |
28 | -------------------------------------------------------------------------------- /resources/views/auth/forgot-password.blade.php: -------------------------------------------------------------------------------- 1 | 2 |
3 | {{ __('Forgot your password? No problem. Just let us know your email address and we will email you a password reset link that will allow you to choose a new one.') }} 4 |
5 | 6 | 7 | 8 | 9 |
10 | @csrf 11 | 12 | 13 |
14 | 15 | 16 | 17 |
18 | 19 |
20 | 21 | {{ __('Email Password Reset Link') }} 22 | 23 |
24 |
25 |
26 | -------------------------------------------------------------------------------- /resources/views/components/auth-session-status.blade.php: -------------------------------------------------------------------------------- 1 | @props(['status']) 2 | 3 | @if ($status) 4 |
merge(['class' => 'font-medium text-sm text-green-600 dark:text-green-400']) }}> 5 | {{ $status }} 6 |
7 | @endif 8 | -------------------------------------------------------------------------------- /resources/views/components/danger-button.blade.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /resources/views/components/dropdown-link.blade.php: -------------------------------------------------------------------------------- 1 | merge(['class' => 'block w-full px-4 py-2 text-left text-sm leading-5 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-none focus:bg-gray-100 dark:focus:bg-gray-800 transition duration-150 ease-in-out']) }}>{{ $slot }} 2 | -------------------------------------------------------------------------------- /resources/views/components/input-error.blade.php: -------------------------------------------------------------------------------- 1 | @props(['messages']) 2 | 3 | @if ($messages) 4 |
    merge(['class' => 'text-sm text-red-600 dark:text-red-400 space-y-1']) }}> 5 | @foreach ((array) $messages as $message) 6 |
  • {{ $message }}
  • 7 | @endforeach 8 |
9 | @endif 10 | -------------------------------------------------------------------------------- /resources/views/components/input-label.blade.php: -------------------------------------------------------------------------------- 1 | @props(['value']) 2 | 3 | 6 | -------------------------------------------------------------------------------- /resources/views/components/nav-link.blade.php: -------------------------------------------------------------------------------- 1 | @props(['active']) 2 | 3 | @php 4 | $classes = ($active ?? false) 5 | ? 'inline-flex items-center px-1 pt-1 border-b-2 border-indigo-400 dark:border-indigo-600 text-sm font-medium leading-5 text-gray-900 dark:text-gray-100 focus:outline-none focus:border-indigo-700 transition duration-150 ease-in-out' 6 | : 'inline-flex items-center px-1 pt-1 border-b-2 border-transparent text-sm font-medium leading-5 text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 hover:border-gray-300 dark:hover:border-gray-700 focus:outline-none focus:text-gray-700 dark:focus:text-gray-300 focus:border-gray-300 dark:focus:border-gray-700 transition duration-150 ease-in-out'; 7 | @endphp 8 | 9 | merge(['class' => $classes]) }}> 10 | {{ $slot }} 11 | 12 | -------------------------------------------------------------------------------- /resources/views/components/primary-button.blade.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /resources/views/components/responsive-nav-link.blade.php: -------------------------------------------------------------------------------- 1 | @props(['active']) 2 | 3 | @php 4 | $classes = ($active ?? false) 5 | ? 'block w-full pl-3 pr-4 py-2 border-l-4 border-indigo-400 dark:border-indigo-600 text-left text-base font-medium text-indigo-700 dark:text-indigo-300 bg-indigo-50 dark:bg-indigo-900/50 focus:outline-none focus:text-indigo-800 dark:focus:text-indigo-200 focus:bg-indigo-100 dark:focus:bg-indigo-900 focus:border-indigo-700 dark:focus:border-indigo-300 transition duration-150 ease-in-out' 6 | : 'block w-full pl-3 pr-4 py-2 border-l-4 border-transparent text-left text-base font-medium text-gray-600 dark:text-gray-400 hover:text-gray-800 dark:hover:text-gray-200 hover:bg-gray-50 dark:hover:bg-gray-700 hover:border-gray-300 dark:hover:border-gray-600 focus:outline-none focus:text-gray-800 dark:focus:text-gray-200 focus:bg-gray-50 dark:focus:bg-gray-700 focus:border-gray-300 dark:focus:border-gray-600 transition duration-150 ease-in-out'; 7 | @endphp 8 | 9 | merge(['class' => $classes]) }}> 10 | {{ $slot }} 11 | 12 | -------------------------------------------------------------------------------- /resources/views/components/secondary-button.blade.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /resources/views/components/text-input.blade.php: -------------------------------------------------------------------------------- 1 | @props(['disabled' => false]) 2 | 3 | merge(['class' => 'filament-forms-input block w-full transition duration-75 rounded-lg shadow-sm outline-none focus:ring-1 focus:ring-inset disabled:opacity-70 dark:bg-gray-700 dark:text-white border-gray-300 focus:border-primary-500 focus:ring-primary-500 dark:border-gray-600 dark:focus:border-primary-500']) !!}> 4 | -------------------------------------------------------------------------------- /resources/views/dashboard.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |

4 | {{ __('Dashboard') }} 5 |

6 |
7 | 8 |
9 |
10 |
11 |
12 | {{ __("You're logged in!") }} 13 |
14 |
15 |
16 |
17 |
18 | -------------------------------------------------------------------------------- /resources/views/filament/pages/dashboard.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /resources/views/filament/pages/profile.blade.php: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |
5 | @include('profile.partials.update-profile-information-form') 6 |
7 |
8 | 9 |
10 |
11 | @include('profile.partials.update-password-form') 12 |
13 |
14 |
15 |
16 | -------------------------------------------------------------------------------- /resources/views/filament/resources/account-resource/pages/account-detail.blade.php: -------------------------------------------------------------------------------- 1 | 2 |
4 |
5 | {{ __('accounts.balance') }} 6 |
7 |
8 | {{ $account->balance }} 9 |
10 |
11 |

{{ __('revenues.revenues') }}

12 | 13 |

{{ __('expenses.expenses') }}

14 | 15 |

{{ __('transactions.transactions') }}

16 | 17 |

{{ __('checks.checks') }}

18 | 19 |
20 | -------------------------------------------------------------------------------- /resources/views/filament/resources/corporation-resource/pages/corporation-detail.blade.php: -------------------------------------------------------------------------------- 1 | 2 |

{{ __('agreements.agreements') }}

3 | 4 |

{{ __('bills.bills') }}

5 | 6 |

{{ __('invoices.invoices') }}

7 | 8 |

{{ __('revenues.revenues') }}

9 | 10 |

{{ __('expenses.expenses') }}

11 | 12 |

{{ __('waybills.waybills') }}

13 | 14 |

{{ __('checks.checks') }}

15 | 16 |
17 | -------------------------------------------------------------------------------- /resources/views/filament/widgets/calendar-widget.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{-- Widget content --}} 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/views/layouts/app.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | {{ config('app.name') }} 12 | 13 | 18 | @vite(['resources/css/app.css', 'resources/js/app.js']) 19 | 20 | 21 | @if (config('filament.dark_mode')) 22 | 29 | @endif 30 | @livewireStyles 31 | @livewireScripts 32 | @stack('scripts') 33 | 34 | 35 | 36 | {{ $slot }} 37 | 38 | @livewire('notifications') 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /resources/views/layouts/guest.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | {{ config('app.name', 'Laravel') }} 9 | 10 | 11 | 12 | 13 | 14 | 15 | @vite(['resources/css/app.css', 'resources/js/app.js']) 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 |
24 | 25 |
26 | {{ $slot }} 27 |
28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /resources/views/livewire/account/check-table.blade.php: -------------------------------------------------------------------------------- 1 |
2 | {{ $this->table }} 3 |
4 | -------------------------------------------------------------------------------- /resources/views/livewire/account/expense-table.blade.php: -------------------------------------------------------------------------------- 1 |
2 | {{ $this->table }} 3 |
4 | -------------------------------------------------------------------------------- /resources/views/livewire/account/revenue-table.blade.php: -------------------------------------------------------------------------------- 1 |
2 | {{ $this->table }} 3 |
4 | -------------------------------------------------------------------------------- /resources/views/livewire/account/transaction-table.blade.php: -------------------------------------------------------------------------------- 1 |
2 | {{ $this->table }} 3 |
4 | -------------------------------------------------------------------------------- /resources/views/livewire/company-select.blade.php: -------------------------------------------------------------------------------- 1 |
config('filament.dark_mode'), 4 | ])> 5 |
6 |
config('filament.dark_mode'), 9 | ])> 10 | 11 |
12 |

13 | {{ __('general.company_change') }} 14 |

15 |
16 | 17 | {{ $this->form }} 18 | 19 | 20 | {{ __('general.continue') }} 21 | 22 |
23 |
24 | @livewire('notifications') 25 |
26 | -------------------------------------------------------------------------------- /resources/views/livewire/corporation/agreement-table.blade.php: -------------------------------------------------------------------------------- 1 |
2 | {{ $this->table }} 3 |
4 | -------------------------------------------------------------------------------- /resources/views/livewire/corporation/bill-table.blade.php: -------------------------------------------------------------------------------- 1 |
2 | {{ $this->table }} 3 |
4 | -------------------------------------------------------------------------------- /resources/views/livewire/corporation/check-table.blade.php: -------------------------------------------------------------------------------- 1 |
2 | {{ $this->table }} 3 |
4 | -------------------------------------------------------------------------------- /resources/views/livewire/corporation/expense-table.blade.php: -------------------------------------------------------------------------------- 1 |
2 | {{ $this->table }} 3 |
4 | -------------------------------------------------------------------------------- /resources/views/livewire/corporation/invoice-table.blade.php: -------------------------------------------------------------------------------- 1 |
2 | {{ $this->table }} 3 |
4 | -------------------------------------------------------------------------------- /resources/views/livewire/corporation/revenue-table.blade.php: -------------------------------------------------------------------------------- 1 |
2 | {{ $this->table }} 3 |
4 | -------------------------------------------------------------------------------- /resources/views/livewire/corporation/waybill-table.blade.php: -------------------------------------------------------------------------------- 1 |
2 | {{ $this->table }} 3 |
4 | -------------------------------------------------------------------------------- /resources/views/profile/edit.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |

4 | {{ __('Profile') }} 5 |

6 |
7 | 8 |
9 |
10 |
11 |
12 | @include('profile.partials.update-profile-information-form') 13 |
14 |
15 | 16 |
17 |
18 | @include('profile.partials.update-password-form') 19 |
20 |
21 | 22 |
23 |
24 | @include('profile.partials.delete-user-form') 25 |
26 |
27 |
28 |
29 |
30 | -------------------------------------------------------------------------------- /resources/views/todos.md: -------------------------------------------------------------------------------- 1 | ## TODO LIST 2 | 3 | - Add bill module (DONE) 4 | 5 | - Add transaction (DONE) 6 | 7 | - Add widgets to the dashboard (Maybe in next version) 8 | 9 | - Add agreement extract (DONE) 10 | 11 | - Group navigation menu (DONE) 12 | 13 | - Add company extract (DONE) 14 | 15 | - Add corporaiton extract (DONE) 16 | 17 | - Add account extract (DONE) 18 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/brand-icon.blade.php: -------------------------------------------------------------------------------- 1 | @if (filled($brand = config('filament.brand'))) 2 |
config('filament.dark_mode'), 5 | ])> 6 | {{ 7 | \Illuminate\Support\Str::of($brand) 8 | ->snake() 9 | ->upper() 10 | ->explode('_') 11 | ->map(fn (string $string) => \Illuminate\Support\Str::substr($string, 0, 1)) 12 | ->take(2) 13 | ->implode('') 14 | }} 15 |
16 | @endif 17 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/brand.blade.php: -------------------------------------------------------------------------------- 1 | @if (filled($brand = config('filament.brand'))) 2 |
config('filament.dark_mode'), 5 | ]) x-data="{ mode: localStorage.getItem('theme') }" x-on:dark-mode-toggled.window="mode = $event.detail"> 6 | Logo 7 | Logo 9 |
10 | @endif 11 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/button.blade.php: -------------------------------------------------------------------------------- 1 | 5 | {{ $slot }} 6 | 7 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/card/heading.blade.php: -------------------------------------------------------------------------------- 1 |

class(['text-xl font-semibold tracking-tight filament-card-heading']) }}> 2 | {{ $slot }} 3 |

4 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/dropdown/header.blade.php: -------------------------------------------------------------------------------- 1 | @captureSlots([ 2 | 'detail', 3 | ]) 4 | 5 | 9 | {{ $slot }} 10 | 11 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/dropdown/index.blade.php: -------------------------------------------------------------------------------- 1 | @captureSlots([ 2 | 'trigger', 3 | ]) 4 | 5 | 9 | {{ $slot }} 10 | 11 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/dropdown/item.blade.php: -------------------------------------------------------------------------------- 1 | @captureSlots([ 2 | 'detail', 3 | ]) 4 | 5 | 6 | {{ $slot }} 7 | 8 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/dropdown/list/index.blade.php: -------------------------------------------------------------------------------- 1 | 5 | {{ $slot }} 6 | 7 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/dropdown/list/item.blade.php: -------------------------------------------------------------------------------- 1 | @captureSlots([ 2 | 'detail', 3 | ]) 4 | 5 | 9 | {{ $slot }} 10 | 11 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/form/actions.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'actions', 3 | 'fullWidth' => false, 4 | ]) 5 | 6 |
25 | 31 |
32 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/form/index.blade.php: -------------------------------------------------------------------------------- 1 |
class(['filament-form space-y-6']) }} 7 | > 8 | {{ $slot }} 9 |
10 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/global-search/actions/action.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'action', 3 | 'component', 4 | ]) 5 | 6 | @php 7 | $wireClickAction = null; 8 | 9 | if ($action->getEvent()) { 10 | $emitArguments = collect([$action->getEvent()]) 11 | ->merge($action->getEventData()) 12 | ->map(fn (mixed $value) => \Illuminate\Support\Js::from($value)->toHtml()) 13 | ->implode(', '); 14 | 15 | $wireClickAction = "\$emit($emitArguments)"; 16 | } 17 | @endphp 18 | 19 | 32 | {{ $slot }} 33 | 34 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/global-search/actions/index.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'actions', 3 | ]) 4 | 5 |
class('filament-global-search-actions mt-4 flex gap-3') }}> 6 | @foreach ($actions as $action) 7 | @unless ($action->isHidden()) 8 | {{ $action }} 9 | @endunless 10 | @endforeach 11 |
12 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/global-search/end.blade.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afsakar/payvel/06a3f85e5e9257358c155f3cd40d7b07aa0af8d1/resources/views/vendor/filament/components/global-search/end.blade.php -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/global-search/index.blade.php: -------------------------------------------------------------------------------- 1 | 18 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/global-search/no-results-message.blade.php: -------------------------------------------------------------------------------- 1 |
class([ 2 | 'filament-global-search-no-results-message px-6 py-4', 3 | 'dark:text-gray-200' => config('filament.dark_mode'), 4 | ]) }}> 5 | {{ __('filament::global-search.no_results_message') }} 6 |
7 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/global-search/result-group.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'label', 3 | 'results', 4 | ]) 5 | 6 |
    class([ 7 | 'filament-global-search-result-group divide-y', 8 | 'dark:divide-gray-700' => config('filament.dark_mode'), 9 | ]) }}> 10 |
  • 11 |
    config('filament.dark_mode'), 14 | ])> 15 |

    config('filament.dark_mode'), 18 | ])> 19 | {{ $label }} 20 |

    21 |
    22 |
  • 23 | 24 | @foreach ($results as $result) 25 | 31 | @endforeach 32 |
33 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/global-search/results-container.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'results', 3 | ]) 4 | 5 |
class(['filament-global-search-results-container absolute right-0 rtl:right-auto rtl:left-0 top-auto z-10 mt-2 shadow-xl overflow-hidden rounded-xl w-screen max-w-xs sm:max-w-lg']) }} 12 | > 13 |
config('filament.dark_mode'), 16 | ])> 17 | @forelse ($results->getCategories() as $group => $groupedResults) 18 | 19 | @empty 20 | 21 | @endforelse 22 |
23 |
24 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/global-search/start.blade.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afsakar/payvel/06a3f85e5e9257358c155f3cd40d7b07aa0af8d1/resources/views/vendor/filament/components/global-search/start.blade.php -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/header/heading.blade.php: -------------------------------------------------------------------------------- 1 |

class(['filament-header-heading text-2xl font-bold tracking-tight']) }}> 2 | {{ $slot }} 3 |

4 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/header/index.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'actions' => null, 3 | 'heading', 4 | 'subheading' => null 5 | ]) 6 | 7 |
class(['filament-header space-y-2 items-start justify-between sm:flex sm:space-y-0 sm:space-x-4 sm:rtl:space-x-reverse sm:py-4']) }}> 8 |
9 | 10 | {{ $heading }} 11 | 12 | 13 | @if ($subheading) 14 | 15 | {{ $subheading }} 16 | 17 | @endif 18 |
19 | 20 | 21 | 22 |
23 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/header/subheading.blade.php: -------------------------------------------------------------------------------- 1 |

class(['filament-header-subheading max-w-2xl tracking-tight text-gray-500']) }}> 2 | {{ $slot }} 3 |

4 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/hr.blade.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/icon-button.blade.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/layouts/app/sidebar/end.blade.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afsakar/payvel/06a3f85e5e9257358c155f3cd40d7b07aa0af8d1/resources/views/vendor/filament/components/layouts/app/sidebar/end.blade.php -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/layouts/app/sidebar/footer.blade.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/layouts/app/sidebar/github-logo.blade.php: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/layouts/app/sidebar/start.blade.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/afsakar/payvel/06a3f85e5e9257358c155f3cd40d7b07aa0af8d1/resources/views/vendor/filament/components/layouts/app/sidebar/start.blade.php -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/layouts/app/topbar/breadcrumbs.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'breadcrumbs' => [], 3 | ]) 4 | 5 |
class(['filament-breadcrumbs flex-1']) }}> 6 | 32 |
33 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/layouts/app/topbar/database-notifications-trigger.blade.php: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/link.blade.php: -------------------------------------------------------------------------------- 1 | 5 | {{ $slot }} 6 | 7 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/modal/actions.blade.php: -------------------------------------------------------------------------------- 1 | 6 | {{ $slot }} 7 | 8 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/modal/heading.blade.php: -------------------------------------------------------------------------------- 1 | 5 | {{ $slot }} 6 | 7 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/modal/index.blade.php: -------------------------------------------------------------------------------- 1 | @captureSlots([ 2 | 'actions', 3 | 'content', 4 | 'footer', 5 | 'header', 6 | 'heading', 7 | 'subheading', 8 | 'trigger', 9 | ]) 10 | 11 | 18 | {{ $slot }} 19 | 20 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/modal/subheading.blade.php: -------------------------------------------------------------------------------- 1 | 5 | {{ $slot }} 6 | 7 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/notification-manager.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | /** @deprecated */ 3 | @endphp 4 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/stats/index.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'columns' => '3', 3 | ]) 4 | 5 | @php 6 | $columns = (int) $columns; 7 | @endphp 8 | 9 |
class([ 10 | 'filament-stats grid gap-4 lg:gap-8', 11 | 'md:grid-cols-3' => $columns === 3, 12 | 'md:grid-cols-1' => $columns === 1, 13 | 'md:grid-cols-2' => $columns === 2, 14 | 'md:grid-cols-2 xl:grid-cols-4' => $columns === 4, 15 | ]) }}> 16 | {{ $slot }} 17 |
18 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/tabs/index.blade.php: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/tabs/item.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'active' => false, 3 | 'tag' => 'button', 4 | 'type' => 'button', 5 | ]) 6 | 7 | @php 8 | $buttonClasses = \Illuminate\Support\Arr::toCssClasses([ 9 | 'filament-tabs-item flex items-center h-8 px-5 font-medium rounded-lg outline-none focus:ring-2 focus:ring-primary-500 focus:ring-inset', 10 | 'hover:text-gray-800 focus:text-primary-600' => ! $active, 11 | 'dark:text-gray-400 dark:hover:text-gray-300 dark:focus:text-primary-400' => (! $active) && config('filament.dark_mode'), 12 | 'text-primary-600 shadow bg-white' => $active, 13 | ]); 14 | @endphp 15 | 16 | @if ($tag === 'button') 17 | 23 | @elseif ($tag === 'a') 24 | class([$buttonClasses]) }}> 25 | {{ $slot }} 26 | 27 | @endif 28 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/user-avatar.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'user' => \Filament\Facades\Filament::auth()->user(), 3 | ]) 4 | 5 |
class([ 7 | 'w-10 h-10 rounded-full bg-gray-200 bg-cover bg-center', 8 | 'dark:bg-gray-900' => config('filament.dark_mode'), 9 | ]) }} 10 | style="background-image: url('{{ \Filament\Facades\Filament::getUserAvatarUrl($user) }}')" 11 | >
12 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/components/widgets.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'columns' => [ 3 | 'lg' => 2, 4 | ], 5 | 'data' => [], 6 | 'widgets' => [], 7 | ]) 8 | 9 | 18 | @foreach ($widgets as $widget) 19 | @if ($widget::canView()) 20 | @livewire(\Livewire\Livewire::getAlias($widget), $data, key($widget)) 21 | @endif 22 | @endforeach 23 | 24 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/global-search/actions/button-action.blade.php: -------------------------------------------------------------------------------- 1 | 8 | {{ $getLabel() }} 9 | 10 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/global-search/actions/icon-button-action.blade.php: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/global-search/actions/link-action.blade.php: -------------------------------------------------------------------------------- 1 | 7 | {{ $getLabel() }} 8 | 9 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/login.blade.php: -------------------------------------------------------------------------------- 1 |
2 | {{ $this->form }} 3 | 4 | 5 | {{ __('filament::login.buttons.submit.label') }} 6 | 7 |
8 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/pages/actions/button-action.blade.php: -------------------------------------------------------------------------------- 1 | 8 | {{ $getLabel() }} 9 | 10 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/pages/actions/group.blade.php: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/pages/actions/grouped-action.blade.php: -------------------------------------------------------------------------------- 1 | 7 | {{ $getLabel() }} 8 | 9 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/pages/actions/icon-button-action.blade.php: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/pages/actions/link-action.blade.php: -------------------------------------------------------------------------------- 1 | 7 | {{ $getLabel() }} 8 | 9 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/pages/actions/modal/actions/button-action.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | if (! $getAction()) { 3 | $wireClickAction = null; 4 | } else { 5 | $wireClickAction = $getAction(); 6 | 7 | if ($getActionArguments()) { 8 | $wireClickAction .= '(\''; 9 | $wireClickAction .= \Illuminate\Support\Str::of(json_encode($getActionArguments()))->replace('"', '\\"'); 10 | $wireClickAction .= '\')'; 11 | } 12 | } 13 | @endphp 14 | 15 | 31 | {{ $getLabel() }} 32 | 33 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/pages/actions/select-action.blade.php: -------------------------------------------------------------------------------- 1 |
2 | 5 | 6 | 24 |
25 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/pages/dashboard.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/resources/pages/create-record.blade.php: -------------------------------------------------------------------------------- 1 | 7 | 8 | {{ $this->form }} 9 | 10 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/resources/pages/list-records.blade.php: -------------------------------------------------------------------------------- 1 | 7 | {{ \Filament\Facades\Filament::renderHook('resource.pages.list-records.table.start') }} 8 | 9 | {{ $this->table }} 10 | 11 | {{ \Filament\Facades\Filament::renderHook('resource.pages.list-records.table.end') }} 12 | 13 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/resources/relation-manager.blade.php: -------------------------------------------------------------------------------- 1 |
2 | {{ \Filament\Facades\Filament::renderHook('resource.relation-manager.start') }} 3 | 4 | {{ $this->table }} 5 | 6 | {{ \Filament\Facades\Filament::renderHook('resource.relation-manager.end') }} 7 |
8 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/widgets/stats-overview-widget.blade.php: -------------------------------------------------------------------------------- 1 | 2 |
getPollingInterval()) ? "wire:poll.{$pollingInterval}" : '' !!}> 3 | 4 | @foreach ($this->getCachedCards() as $card) 5 | {{ $card }} 6 | @endforeach 7 | 8 |
9 |
10 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/widgets/stats-overview-widget/card.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | $url = $getUrl(); 3 | @endphp 4 | 5 | 22 | -------------------------------------------------------------------------------- /resources/views/vendor/filament/widgets/table-widget.blade.php: -------------------------------------------------------------------------------- 1 | 2 | {{ $this->table }} 3 | 4 | -------------------------------------------------------------------------------- /routes/api.php: -------------------------------------------------------------------------------- 1 | get('/user', function (Request $request) { 18 | return $request->user(); 19 | }); 20 | -------------------------------------------------------------------------------- /routes/channels.php: -------------------------------------------------------------------------------- 1 | id === (int) $id; 18 | }); 19 | -------------------------------------------------------------------------------- /routes/console.php: -------------------------------------------------------------------------------- 1 | comment(Inspiring::quote()); 19 | })->purpose('Display an inspiring quote'); 20 | -------------------------------------------------------------------------------- /storage/app/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !public/ 3 | !.gitignore 4 | -------------------------------------------------------------------------------- /storage/app/public/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/.gitignore: -------------------------------------------------------------------------------- 1 | compiled.php 2 | config.php 3 | down 4 | events.scanned.php 5 | maintenance.php 6 | routes.php 7 | routes.scanned.php 8 | schedule-* 9 | services.json 10 | -------------------------------------------------------------------------------- /storage/framework/cache/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !data/ 3 | !.gitignore 4 | -------------------------------------------------------------------------------- /storage/framework/cache/data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/sessions/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/testing/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/views/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/logs/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | const colors = require("tailwindcss/colors"); 2 | 3 | module.exports = { 4 | darkMode: "class", 5 | content: [ 6 | "./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php", 7 | "./storage/framework/views/*.php", 8 | "./resources/views/**/*.blade.php", 9 | , 10 | "./vendor/filament/**/*.blade.php", 11 | ], 12 | theme: { 13 | extend: { 14 | colors: { 15 | danger: colors.rose, 16 | primary: colors.amber, 17 | success: colors.green, 18 | warning: colors.yellow, 19 | }, 20 | }, 21 | }, 22 | plugins: [ 23 | require("@tailwindcss/forms"), 24 | require("@tailwindcss/typography"), 25 | ], 26 | }; 27 | -------------------------------------------------------------------------------- /tests/CreatesApplication.php: -------------------------------------------------------------------------------- 1 | make(Kernel::class)->bootstrap(); 18 | 19 | return $app; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /tests/Feature/Auth/AuthenticationTest.php: -------------------------------------------------------------------------------- 1 | get('/login'); 17 | 18 | $response->assertStatus(200); 19 | } 20 | 21 | public function test_users_can_authenticate_using_the_login_screen(): void 22 | { 23 | $user = User::factory()->create(); 24 | 25 | $response = $this->post('/login', [ 26 | 'email' => $user->email, 27 | 'password' => 'password', 28 | ]); 29 | 30 | $this->assertAuthenticated(); 31 | $response->assertRedirect(RouteServiceProvider::HOME); 32 | } 33 | 34 | public function test_users_can_not_authenticate_with_invalid_password(): void 35 | { 36 | $user = User::factory()->create(); 37 | 38 | $this->post('/login', [ 39 | 'email' => $user->email, 40 | 'password' => 'wrong-password', 41 | ]); 42 | 43 | $this->assertGuest(); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /tests/Feature/Auth/PasswordConfirmationTest.php: -------------------------------------------------------------------------------- 1 | create(); 16 | 17 | $response = $this->actingAs($user)->get('/confirm-password'); 18 | 19 | $response->assertStatus(200); 20 | } 21 | 22 | public function test_password_can_be_confirmed(): void 23 | { 24 | $user = User::factory()->create(); 25 | 26 | $response = $this->actingAs($user)->post('/confirm-password', [ 27 | 'password' => 'password', 28 | ]); 29 | 30 | $response->assertRedirect(); 31 | $response->assertSessionHasNoErrors(); 32 | } 33 | 34 | public function test_password_is_not_confirmed_with_invalid_password(): void 35 | { 36 | $user = User::factory()->create(); 37 | 38 | $response = $this->actingAs($user)->post('/confirm-password', [ 39 | 'password' => 'wrong-password', 40 | ]); 41 | 42 | $response->assertSessionHasErrors(); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /tests/Feature/Auth/RegistrationTest.php: -------------------------------------------------------------------------------- 1 | get('/register'); 16 | 17 | $response->assertStatus(200); 18 | } 19 | 20 | public function test_new_users_can_register(): void 21 | { 22 | $response = $this->post('/register', [ 23 | 'name' => 'Test User', 24 | 'email' => 'test@example.com', 25 | 'password' => 'password', 26 | 'password_confirmation' => 'password', 27 | ]); 28 | 29 | $this->assertAuthenticated(); 30 | $response->assertRedirect(RouteServiceProvider::HOME); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /tests/Feature/ExampleTest.php: -------------------------------------------------------------------------------- 1 | get('/'); 16 | 17 | $response->assertStatus(200); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /tests/TestCase.php: -------------------------------------------------------------------------------- 1 | assertTrue(true); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vite"; 2 | import laravel, { refreshPaths } from "laravel-vite-plugin"; 3 | 4 | export default defineConfig({ 5 | server: { 6 | host: "filament.test", 7 | }, 8 | plugins: [ 9 | laravel({ 10 | input: ["resources/css/app.css", "resources/js/app.js"], 11 | refresh: [ 12 | ...refreshPaths, 13 | "app/Http/Livewire/**", 14 | "app/Forms/Components/**", 15 | ], 16 | }), 17 | ], 18 | }); 19 | --------------------------------------------------------------------------------