# Bonfire.UI.Me
![](https://i.imgur.com/XoQvDCW.png)

[Bonfire.UI.Me](http://bonfirenetworks.org/extensions/ui_social.html) is an extension that includes the main User Interfaces (routes, pages and components) for functionality around accounts, users, profiles, authentication, etc.

This extension is meant to be used by other extensions like [Bonfire.Me](https://github.com/bonfire-networks/bonfire_me), which provide logic for the UI to work with.

You can customise it by forking, but we recommend creating an extension which uses this one as a dependency, and defines your custom components, views, and/or routes (you can then comment `Bonfire.UI.Me.Routes` from your top-level Router to use your custom routes and views instead). 

### Stack

So far, Bonfire UI extensions are built with the PETALS stack (note that is not a requirement), which means:

- [Phoenix](https://www.phoenixframework.org/)
- [Elixir](https://elixir-lang.org/)
- [TailwindCSS](https://tailwindcss.com/)
- [Alpine.js](https://alpinejs.dev/)
- [LiveView](https://github.com/phoenixframework/phoenix_live_view#readme)
- [Surface](https://surface-ui.org/)

Surface is a server-side rendering component library (built on top of Phoenix and LiveView) that inherits a lot of design patterns from popular JS framework like Vue.js and React, while being almost JavaScript-free compared to common SPAs.  

### Scaffolding
The relevant folders are:
- [Components](https://github.com/bonfire-networks/bonfire_ui_me/tree/main/lib/components): Surface stateless and stateful components.
- [Views](https://github.com/bonfire-networks/bonfire_ui_me/tree/main/lib/views): The main pages that are rendered when navigating to a specific route
- [Test](https://github.com/bonfire-networks/bonfire_ui_me/tree/main/test): All the unit tests for the specific module.

### Other resources
- [A blog post that introduces the concept of themeable bonfire apps](https://bonfirenetworks.org/posts/let_thousand_bonfires_bloom/)


## Copyright and License

Copyright (c) 2022 Bonfire Contributors

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public
License along with this program.  If not, see <https://www.gnu.org/licenses/>.