_ _ _ _ _
_ __ ___ __ _| | | ___| |__ __ _| |_ ___ _ __ ___ _ __ (_) ___ _ __ ___ ___
| '_ ` _ \ / _` | | | / __| '_ \ / _` | __| / __| '__/ _ \| '_ \ | |/ _ \ | '_ ` _ \ / _ \
| | | | | | (_| | | || (__| | | | (_| | |_ | (__| | | (_) | | | || | __/_| | | | | | __/
|_| |_| |_|\__,_|_|_(_)___|_| |_|\__,_|\__(_)___|_| \___/|_| |_|/ |\___(_)_| |_| |_|\___|
|__/
01101101 01100001 01101100 01101100 00101110 01100011 01101000 01100001 01110100 00101110
01100011 01110010 01101111 01101110 01101010 01100101 00101110 01101101 01100101
For the detailed documentation, have a look in the /docs
folder, or follow this link: Documentation
Creating Mall Chat bots for all the malls are challenging for the following reasons
- Getting a list of all the malls in South Africa has proven to be difficult and I can never be sure that I found them all
- Finding Information on all the malls are in some cases challenging as well as some of the smaller malls don't have a website
- Getting info on smaller malls are mostly from Google Maps and other Search Engines
There are more reasons, that I'm not going into right now, but I have decided to rather build a tool to create Mall Chat Bots as needed.
To save some time I decided to use Notion as a type of CMS for all the Chat Bots, and while I'm bust also for user authentication. In Notion I created the following DB Tables
_ _ _ _ _
_ __ ___ __ _| | | ___| |__ __ _| |_ ___ _ __ ___ _ __ (_) ___ _ __ ___ ___
| '_ ` _ \ / _` | | | / __| '_ \ / _` | __| / __| '__/ _ \| '_ \ | |/ _ \ | '_ ` _ \ / _ \
| | | | | | (_| | | || (__| | | | (_| | |_ | (__| | | (_) | | | || | __/_| | | | | | __/
|_| |_| |_|\__,_|_|_(_)___|_| |_|\__,_|\__(_)___|_| \___/|_| |_|/ |\___(_)_| |_| |_|\___|
|__/
01101101 01100001 01101100 01101100 00101110 01100011 01101000 01100001 01110100 00101110
01100011 01110010 01101111 01101110 01101010 01100101 00101110 01101101 01100101
Mall Chat Bot Generator
- [-] ๐จ Tailwind CSS v3 with Windicss
- [-] โจ Headless UI
- [-] ๐ Icon Pack Component (unplugin-icons)
- [-] ๐น State & Store Management (Pinia)
- [-] ๐ฉ Localization (i18n) by @intlify & Auto Generate Locales
- [-] ๐ฆ Vue Composition Collection (Vueuse)
- [-] ๐ Content Management System (Nuxt Content) [SSR]
- [-] ๐ Switch Theme (light, dark, system, realtime)
- [-] ๐ฎ๐ฉ Language Switcher
- [-] ๐ช Built-in Component & Layout
- [-] Eslint & Prettier
- [-] Custom Workspace Snippets
- [-] Built-in Unit Test
- [-] Configurable Theme
- [-] Primary Colors
- [-] Font
- Install dependencies
pnpm install --shamefully-hoist
- Run
pnpm dev
to start development server and openhttp://localhost:3000
in your browser
- Run
pnpm generate
to build the project - Serve
dist/
folder Checkout the deployment documentation.
- [-] Footer
- [-] Button
- [-] Anchor (link)
- [-] Alert
- [-] Card
- [-] Action Sheet
- [-] Theme Toggle / Switcher
- [-] Navbar
- [-] Navbar Builder
- [-] Drawer (on mobile)
- [-] Options (on mobile)
- [-] Page Layout
- [-] Wrapper
- [-] Header
- [-] Title
- [-] Body
- [-] Section
- [-] Section Wrapper
- [-] Section Title
- [-] Section
- [-] Dashboard Layout
- [-] Sidebar
- Modal
Tailwindcss import managed by windicss. and you can add custom styles in :
/path/to/assets/sass/app.scss
ThemeManager is a plugin that allows you to switch between themes. this lib in :
/path/to/utils/theme.ts
Thememanager
is a function-class construct when app.vue before mounted. theme construct inside AppSetup()
in /path/to/app.vue
:
<!-- /path/to/app.vue -->
<script lang="ts" setup>
import { AppSetup } from '~/utils/app';
// app setup
AppSetup()
</script>
To change theme, you can direct set theme from state theme.setting
, example :
<script lang="ts" setup>
import { IThemeSettingOptions } from '~/utils/theme'
const themeSetting = useState<IThemeSettingOptions>('theme.setting')
themeSetting.value = 'dark'
</script>
When you change state theme.setting
, it will automatically change theme.
Theme Setting have 4 options :
light
dark
system
(operating system theme)realtime
(realtime theme, if 05:00 - 17:00, it will change to light theme, otherwise dark)
We have state theme.current
, this state return light
or dark
theme. basically it's process from theme.setting
.
don't change theme with this state.
Localization is a plugin that allows you to switch between languages. this lib in :
/path/to/utils/lang.ts
LanguageManager
is a function-class construct when app.vue before mounted.
this lib depend on @intlify/nuxt3
lang construct inside AppSetup()
in /path/to/app.vue
:
<!-- /path/to/app.vue -->
<script lang="ts" setup>
import { AppSetup } from '~/utils/app';
// app setup
AppSetup()
</script>
To change language, you can direct set language from state lang.setting
, example :
<script lang="ts" setup>
const langSetting = useState<string>('locale.setting')
langSetting.value = 'en'
</script>
When you change state locale.setting
, it will automatically change language.
I made an automatic tool to automatically translate to all languages โโthat have been prepared in the ./locales/ folder So, you can just update "locales/en.yml" and run this tools, it will automatically translate to all languages.
You can just run:
pnpm generate:locales
# or :
node ./tools/translator.js ./locales en.yml
This project using unplugin-icons for auto generate and import icon as component.
You can see collection icon list in : https://icones.js.org/
you can use <prefix-collection:icon />
or <PrefixCollection:Icon />
.
in this project, configuration prefix as a "icon", you can see in nuxt.config.ts
:
export default defineNuxtConfig({
...
vite: {
plugins: [
UnpluginComponentsVite({
dts: true,
resolvers: [
IconsResolver({
prefix: 'Icon',
}),
],
}),
],
},
...
})
// use icon from collection "Simple Icons" and name icon is "nuxtdotjs"
<IconSimpleIcons:nuxtdotjs />
// use icon from collection "Unicons" and name icon is "sun"
<IconUil:sun />
This project is licensed under the MIT license, Copyright (c) 2023 Charl Cronje. For more information see the LICENSE file.