Full port of Odoo's ERP system from Python to Go, with the original Odoo JavaScript frontend (OWL framework) running against the Go server. Backend (10,691 LoC Go): - Custom ORM: CRUD, domains→SQL with JOINs, computed fields, sequences - 93 models across 14 modules (base, account, sale, stock, purchase, hr, project, crm, fleet, product, l10n_de, google_address/translate/calendar) - Auth with bcrypt + session cookies - Setup wizard (company, SKR03 chart, admin, demo data) - Double-entry bookkeeping constraint - Sale→Invoice workflow (confirm SO → generate invoice → post) - SKR03 chart of accounts (110 accounts) + German taxes (USt/VSt) - Record rules (multi-company filter) - Google integrations as opt-in modules (Maps, Translate, Calendar) Frontend: - Odoo's original OWL webclient (503 JS modules, 378 XML templates) - JS transpiled via Odoo's js_transpiler (ES modules → odoo.define) - SCSS compiled to CSS (675KB) via dart-sass - XML templates compiled to registerTemplate() JS calls - Static file serving from Odoo source addons - Login page, session management, menu navigation - Contacts list view renders with real data from PostgreSQL Infrastructure: - 14MB single binary (CGO_ENABLED=0) - Docker Compose (Go server + PostgreSQL 16) - Zero phone-home (no outbound calls to odoo.com) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
217 lines
12 KiB
Plaintext
217 lines
12 KiB
Plaintext
/web/static/lib/bootstrap/scss/_functions.scss
|
|
/web/static/lib/bootstrap/scss/_mixins.scss
|
|
/web/static/src/scss/functions.scss
|
|
/web/static/src/scss/mixins_forwardport.scss
|
|
/web/static/src/scss/bs_mixins_overrides.scss
|
|
/web/static/src/scss/utils.scss
|
|
/web/static/src/scss/primary_variables.scss
|
|
/web/static/src/core/avatar/avatar.variables.scss
|
|
/web/static/src/core/bottom_sheet/bottom_sheet.variables.scss
|
|
/web/static/src/core/notifications/notification.variables.scss
|
|
/web/static/src/search/control_panel/control_panel.variables.scss
|
|
/web/static/src/search/search_bar/search_bar.variables.scss
|
|
/web/static/src/search/search_panel/search_panel.variables.scss
|
|
/web/static/src/views/fields/statusbar/statusbar_field.variables.scss
|
|
/web/static/src/views/fields/translation_button.variables.scss
|
|
/web/static/src/views/form/form.variables.scss
|
|
/web/static/src/views/kanban/kanban.variables.scss
|
|
/web/static/src/webclient/burger_menu/burger_menu.variables.scss
|
|
/web/static/src/webclient/navbar/navbar.variables.scss
|
|
/web/static/src/scss/secondary_variables.scss
|
|
/web/static/src/scss/bootstrap_overridden.scss
|
|
/web/static/src/scss/bs_mixins_overrides_backend.scss
|
|
/web/static/src/scss/pre_variables.scss
|
|
/web/static/lib/bootstrap/scss/_variables.scss
|
|
/web/static/lib/bootstrap/scss/_variables-dark.scss
|
|
/web/static/lib/bootstrap/scss/_maps.scss
|
|
/web/static/src/scss/import_bootstrap.scss
|
|
/web/static/src/scss/utilities_custom.scss
|
|
/web/static/lib/bootstrap/scss/utilities/_api.scss
|
|
/web/static/src/scss/bootstrap_review.scss
|
|
/web/static/src/scss/bootstrap_review_backend.scss
|
|
/web/static/src/core/utils/transitions.scss
|
|
/web/static/src/core/action_swiper/action_swiper.scss
|
|
/web/static/src/core/autocomplete/autocomplete.scss
|
|
/web/static/src/core/avatar/avatar.scss
|
|
/web/static/src/core/avatar/avatar.variables.scss
|
|
/web/static/src/core/badge/badge.scss
|
|
/web/static/src/core/barcode/barcode_dialog.scss
|
|
/web/static/src/core/barcode/crop_overlay.scss
|
|
/web/static/src/core/bottom_sheet/bottom_sheet.scss
|
|
/web/static/src/core/bottom_sheet/bottom_sheet.variables.scss
|
|
/web/static/src/core/checkbox/checkbox.scss
|
|
/web/static/src/core/color_picker/color_picker.scss
|
|
/web/static/src/core/color_picker/custom_color_picker/custom_color_picker.scss
|
|
/web/static/src/core/colorlist/colorlist.scss
|
|
/web/static/src/core/commands/command_palette.scss
|
|
/web/static/src/core/datetime/datetime_picker.scss
|
|
/web/static/src/core/debug/debug_menu.scss
|
|
/web/static/src/core/dialog/dialog.scss
|
|
/web/static/src/core/dropdown/accordion_item.scss
|
|
/web/static/src/core/dropdown/dropdown.scss
|
|
/web/static/src/core/dropzone/dropzone.scss
|
|
/web/static/src/core/effects/rainbow_man.scss
|
|
/web/static/src/core/emoji_picker/emoji_picker.dark.scss
|
|
/web/static/src/core/emoji_picker/emoji_picker.scss
|
|
/web/static/src/core/errors/error_dialog.scss
|
|
/web/static/src/core/file_upload/file_upload_progress_bar.scss
|
|
/web/static/src/core/file_upload/file_upload_progress_record.scss
|
|
/web/static/src/core/file_viewer/file_viewer.dark.scss
|
|
/web/static/src/core/file_viewer/file_viewer.scss
|
|
/web/static/src/core/ir_ui_view_code_editor/code_editor.scss
|
|
/web/static/src/core/model_field_selector/model_field_selector.scss
|
|
/web/static/src/core/model_field_selector/model_field_selector_popover.scss
|
|
/web/static/src/core/model_selector/model_selector.scss
|
|
/web/static/src/core/notebook/notebook.scss
|
|
/web/static/src/core/notifications/notification.scss
|
|
/web/static/src/core/notifications/notification.variables.scss
|
|
/web/static/src/core/overlay/overlay_container.scss
|
|
/web/static/src/core/pager/pager_indicator.scss
|
|
/web/static/src/core/popover/popover.scss
|
|
/web/static/src/core/pwa/install_prompt.scss
|
|
/web/static/src/core/record_selectors/record_selectors.scss
|
|
/web/static/src/core/resizable_panel/resizable_panel.scss
|
|
/web/static/src/core/select_menu/select_menu.scss
|
|
/web/static/src/core/signature/name_and_signature.scss
|
|
/web/static/src/core/tags_list/tags_list.scss
|
|
/web/static/src/core/time_picker/time_picker.scss
|
|
/web/static/src/core/tooltip/tooltip.scss
|
|
/web/static/src/core/tree_editor/tree_editor.scss
|
|
/web/static/src/core/ui/block_ui.scss
|
|
/web/static/src/core/utils/draggable_hook_builder.scss
|
|
/web/static/src/core/utils/nested_sortable.scss
|
|
/web/static/src/core/utils/transitions.scss
|
|
/web/static/src/libs/fontawesome/css/font-awesome.css
|
|
/web/static/lib/odoo_ui_icons/style.css
|
|
/web/static/src/webclient/navbar/navbar.scss
|
|
/web/static/src/scss/animation.scss
|
|
/web/static/src/scss/fontawesome_overridden.scss
|
|
/web/static/src/scss/mimetypes.scss
|
|
/web/static/src/scss/ui.scss
|
|
/web/static/src/views/fields/translation_dialog.scss
|
|
/odoo/base/static/src/css/modules.css
|
|
/web/static/src/core/utils/transitions.scss
|
|
/web/static/src/search/cog_menu/cog_menu.scss
|
|
/web/static/src/search/control_panel/control_panel.scss
|
|
/web/static/src/search/control_panel/control_panel.variables.scss
|
|
/web/static/src/search/control_panel/control_panel.variables_print.scss
|
|
/web/static/src/search/control_panel/control_panel_mobile.css
|
|
/web/static/src/search/custom_group_by_item/custom_group_by_item.scss
|
|
/web/static/src/search/search_bar/search_bar.scss
|
|
/web/static/src/search/search_bar/search_bar.variables.scss
|
|
/web/static/src/search/search_bar_menu/search_bar_menu.scss
|
|
/web/static/src/search/search_panel/search_panel.scss
|
|
/web/static/src/search/search_panel/search_panel.variables.scss
|
|
/web/static/src/search/search_panel/search_view.scss
|
|
/web/static/src/webclient/icons.scss
|
|
/web/static/src/views/calendar/calendar_common/calendar_common_popover.scss
|
|
/web/static/src/views/calendar/calendar_controller.scss
|
|
/web/static/src/views/calendar/calendar_controller_mobile.scss
|
|
/web/static/src/views/calendar/calendar_filter_section/calendar_filter_section.scss
|
|
/web/static/src/views/calendar/calendar_renderer.dark.scss
|
|
/web/static/src/views/calendar/calendar_renderer.scss
|
|
/web/static/src/views/calendar/calendar_renderer_mobile.scss
|
|
/web/static/src/views/calendar/calendar_side_panel/calendar_side_panel.scss
|
|
/web/static/src/views/calendar/calendar_year/calendar_year_popover.scss
|
|
/web/static/src/views/fields/ace/ace_field.scss
|
|
/web/static/src/views/fields/badge_selection/badge_selection.scss
|
|
/web/static/src/views/fields/boolean_favorite/boolean_favorite_field.scss
|
|
/web/static/src/views/fields/char/char_field.scss
|
|
/web/static/src/views/fields/color_picker/color_picker_field.scss
|
|
/web/static/src/views/fields/contact_image/contact_image_field.scss
|
|
/web/static/src/views/fields/copy_clipboard/copy_clipboard_field.scss
|
|
/web/static/src/views/fields/email/email_field.scss
|
|
/web/static/src/views/fields/fields.scss
|
|
/web/static/src/views/fields/google_slide_viewer/google_slide_viewer.scss
|
|
/web/static/src/views/fields/html/html_field.scss
|
|
/web/static/src/views/fields/iframe_wrapper/iframe_wrapper_field.scss
|
|
/web/static/src/views/fields/image/image_field.scss
|
|
/web/static/src/views/fields/journal_dashboard_graph/journal_dashboard_graph_field.scss
|
|
/web/static/src/views/fields/kanban_color_picker/kanban_color_picker_field.scss
|
|
/web/static/src/views/fields/many2many_binary/many2many_binary_field.scss
|
|
/web/static/src/views/fields/many2many_tags/many2many_tags_field.scss
|
|
/web/static/src/views/fields/many2many_tags_avatar/many2many_tags_avatar_field.scss
|
|
/web/static/src/views/fields/many2one/many2one_field.scss
|
|
/web/static/src/views/fields/many2one_avatar/many2one_avatar_field.scss
|
|
/web/static/src/views/fields/monetary/monetary_field.scss
|
|
/web/static/src/views/fields/pdf_viewer/pdf_viewer_field.scss
|
|
/web/static/src/views/fields/percent_pie/percent_pie_field.scss
|
|
/web/static/src/views/fields/phone/phone_field.scss
|
|
/web/static/src/views/fields/priority/priority_field.scss
|
|
/web/static/src/views/fields/progress_bar/progress_bar_field.scss
|
|
/web/static/src/views/fields/properties/card_properties_field.scss
|
|
/web/static/src/views/fields/properties/properties_field.scss
|
|
/web/static/src/views/fields/properties/property_definition.scss
|
|
/web/static/src/views/fields/properties/property_definition_selection.scss
|
|
/web/static/src/views/fields/properties/property_tags.scss
|
|
/web/static/src/views/fields/properties/property_text.scss
|
|
/web/static/src/views/fields/properties/property_value.scss
|
|
/web/static/src/views/fields/radio/radio_field.scss
|
|
/web/static/src/views/fields/selection/selection_field.scss
|
|
/web/static/src/views/fields/signature/signature_field.scss
|
|
/web/static/src/views/fields/state_selection/state_selection_field.scss
|
|
/web/static/src/views/fields/statusbar/statusbar_field.scss
|
|
/web/static/src/views/fields/statusbar/statusbar_field.variables.scss
|
|
/web/static/src/views/fields/text/text_field.scss
|
|
/web/static/src/views/fields/translation_button.scss
|
|
/web/static/src/views/fields/translation_button.variables.scss
|
|
/web/static/src/views/fields/translation_dialog.scss
|
|
/web/static/src/views/fields/url/url_field.scss
|
|
/web/static/src/views/form/button_box/button_box.scss
|
|
/web/static/src/views/form/form.variables.scss
|
|
/web/static/src/views/form/form_controller.scss
|
|
/web/static/src/views/form/setting/setting.scss
|
|
/web/static/src/views/graph/graph_view.scss
|
|
/web/static/src/views/kanban/kanban.print_variables.scss
|
|
/web/static/src/views/kanban/kanban.variables.scss
|
|
/web/static/src/views/kanban/kanban_column_progressbar.scss
|
|
/web/static/src/views/kanban/kanban_controller.scss
|
|
/web/static/src/views/kanban/kanban_cover_image_dialog.scss
|
|
/web/static/src/views/kanban/kanban_examples_dialog.scss
|
|
/web/static/src/views/kanban/kanban_record.scss
|
|
/web/static/src/views/kanban/kanban_record_quick_create.scss
|
|
/web/static/src/views/list/list_confirmation_dialog.scss
|
|
/web/static/src/views/list/list_renderer.scss
|
|
/web/static/src/views/pivot/pivot_view.scss
|
|
/web/static/src/views/view.scss
|
|
/web/static/src/views/view_components/animated_number.scss
|
|
/web/static/src/views/view_components/group_config_menu.scss
|
|
/web/static/src/views/view_components/selection_box.scss
|
|
/web/static/src/views/view_dialogs/export_data_dialog.scss
|
|
/web/static/src/views/view_dialogs/select_create_dialog.scss
|
|
/web/static/src/views/widgets/ribbon/ribbon.scss
|
|
/web/static/src/views/widgets/week_days/week_days.scss
|
|
/web/static/src/webclient/actions/action_dialog.scss
|
|
/web/static/src/webclient/actions/reports/bootstrap_overridden_report.scss
|
|
/web/static/src/webclient/actions/reports/bootstrap_review_report.scss
|
|
/web/static/src/webclient/actions/reports/layout_assets/layout_bubble.scss
|
|
/web/static/src/webclient/actions/reports/layout_assets/layout_folder.scss
|
|
/web/static/src/webclient/actions/reports/layout_assets/layout_wave.scss
|
|
/web/static/src/webclient/actions/reports/report.scss
|
|
/web/static/src/webclient/actions/reports/report_tables.scss
|
|
/web/static/src/webclient/actions/reports/reset.min.css
|
|
/web/static/src/webclient/actions/reports/utilities_custom_report.scss
|
|
/web/static/src/webclient/burger_menu/burger_menu.scss
|
|
/web/static/src/webclient/burger_menu/burger_menu.variables.scss
|
|
/web/static/src/webclient/debug/profiling/profiling_item.scss
|
|
/web/static/src/webclient/debug/profiling/profiling_qweb.scss
|
|
/web/static/src/webclient/icons.scss
|
|
/web/static/src/webclient/loading_indicator/loading_indicator.scss
|
|
/web/static/src/webclient/navbar/navbar.scss
|
|
/web/static/src/webclient/navbar/navbar.variables.scss
|
|
/web/static/src/webclient/res_user_group_ids_field/res_user_group_ids_field.scss
|
|
/web/static/src/webclient/res_user_group_ids_field/res_user_group_ids_privilege_field.scss
|
|
/web/static/src/webclient/settings_form_view/settings/searchable_setting.scss
|
|
/web/static/src/webclient/settings_form_view/settings_form_view.scss
|
|
/web/static/src/webclient/settings_form_view/settings_form_view_mobile.scss
|
|
/web/static/src/webclient/settings_form_view/widgets/settings_widgets.scss
|
|
/web/static/src/webclient/switch_company_menu/switch_company_menu.scss
|
|
/web/static/src/webclient/user_menu/user_menu.scss
|
|
/web/static/src/webclient/webclient.scss
|
|
/web/static/src/webclient/webclient_layout.scss
|
|
/web/static/src/scss/ace.scss
|
|
/web/static/src/scss/base_document_layout.scss
|
|
/odoo/base/static/src/scss/res_partner.scss
|
|
/odoo/base/static/src/scss/res_users.scss
|
|
/web/static/src/views/form/button_box/button_box.scss
|