Files
goodie/pkg/server/assets_css.txt
Marc 0ed29fe2fd Odoo ERP ported to Go — complete backend + original OWL frontend
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>
2026-03-31 01:45:09 +02:00

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