The all-in-one Online Inventory Tracking System
Explore the files »
View Demo
·
Report Bug
·
Request Feature
· Spirio - front end store · Radian Backend - database implementation
Radian is a comprehensive application built with Angular for managing ingredient inventory across multiple locations. With these ingredients one is able to create recipes where they can further be used to craft products. With its intuitive interface and powerful features, Radian simplifies the process of tracking, editing, and updating ingredient and product information.
- Built With
- Installation
- Installation
- Features and Functionality
- Concept Process
- Development Process
- Highlights
- Challenges
- Future Implementation
- Final Outcome
- Contributing
- Authors
- License
- Clone the repo
git clone https://github.com/LucaBreebaart/Radian.git
- Re-direct to the correct file
cd radian
- Install packages with NPM
OR
npm i
npm i --force
- Start the Angular Application
ng serve
- Open the App in your browser
http://localhost:4200/
- Clone the repo
git clone https://github.com/LucaBreebaart/Radian_Backend.git
- Install NPM packages
npm install
- Start the backend server
npm run dev
Radian provides a robust platform for managing ingredient inventory across multiple locations. Users can effortlessly track, edit, and update ingredient details, ensuring accurate and up-to-date information for crafting recipes and products.
Radian extends its functionality beyond ingredient management by enabling users to craft products using the created recipes. From this users now have the ability to create Products from their ingredients which can later be implemented into the online store.
Radian incorporates admin rights management functionality to ensure effective platform security. Leveraging Angular's routing and authentication mechanisms, the application employs a dedicated AuthGuard service to restrict access to certain routes based on user privileges.
Radian prioritizes user security by implementing password hashing techniques and integrating Google reCAPTCHA for extra authentication.
Password Hashing:
- Upon user registration or login, Radian securely hashes passwords, to prevent unauthorized access and safeguard user credentials. The AuthService ensures that passwords are securely stored and transmitted.
reCAPTCHA Integration:
- Radian utilizes the ng-recaptcha module to integrate Google reCAPTCHA into the login process, enhancing security and preventing automated bot attacks.
The Conceptual Process
is the set of actions, activities and research that was done when starting this project.
The Development Process
is the technical implementations and functionality done in the frontend and backend of the application.
- Angular CLI Installation: Initialized the project using Angular CLI.
- Project Structure: Organized the project structure according to Angular best practices.
- Angular Material Integration: Integrated Angular Material for UI components.
- Routing Configuration: Configured routing for different views and components.
- Dashboard Component: Created the dashboard component to display ingredient inventory across multiple locations.
- Card Component: Developed the card component to represent individual ingredients in the inventory.
- Edit Ingredient Component: Implemented the edit ingredient component to allow users to modify ingredient details.
- Login Component: Created the login component for user authentication.
<re-captcha
#captchaRef="reCaptcha"
[siteKey]="'****'"
(resolved)="resolved($event)">
</re-captcha>
- Navigation Component: Developed the navigation component for easy navigation within the application.
- HTTP Client Service: Implemented HTTP client service to communicate with the backend server for fetching and updating data.
- Authentication Service: Developed an authentication service to handle user login/logout functionality and user authentication.
- Ingredients Service: Created a service to manage ingredient-related operations such as fetching, updating, and adding ingredients.
- Location service: To get the current ingredients stock according to the selected location
export class LocationService {
private selectedLocation: string = '';
constructor(@Inject(PLATFORM_ID) private platformId: Object) {
if (isPlatformBrowser(this.platformId)) {
this.selectedLocation = sessionStorage.getItem('selectedLocation') || '';
}
}
setSelectedLocation(location: string) {
this.selectedLocation = location;
if (isPlatformBrowser(this.platformId)) {
sessionStorage.setItem('selectedLocation', location);
}
}
getSelectedLocation(): string {
return this.selectedLocation;
}
}
- API Integration: Integrated with backend APIs to fetch and update database data.
const AppDataSource = new DataSource(
{
"type": "postgres",
"host": "localhost",
"port": 5432,
"username": "postgres",
"password": password,
"database": "radian_db",
"entities": ["src/entity/*.ts"],
"logging": true,
"synchronize": true
}
)
- User Authentication: Implemented authentication mechanisms to secure user login and registration.
- Authorization: Implemented role-based authorization to control access to admin functionalities.
- Inventory Management: Developed functionality to manage ingredient inventory across multiple locations.
- User Authentication: Implemented secure user authentication with hashed passwords and reCAPTCHA integration.
- Admin Rights Management: Provided administrators with the ability to manage the platform effectively, controlling user access and monitoring content.
export const routes: Routes = [
{ path: '', component: ProductsPage },
{ path: 'newProduct', component: NewProductPage },
{ path: 'dashboard', component: DashboardPage },
{ path: 'ingredients', component: IngredientsPage },
{ path: 'newIngredient', component: NewIngredientPage },
{ path: 'home', component: HomePage, canActivate: [AuthGuard] },
{ path: 'login', component: LoginComponent },
{ path: 'edit-ingredient/:id', component: EditIngredientComponent },
{ path: 'editproduct/:id', component: EditProductsComponent},
{ path: '', redirectTo: 'inventory', pathMatch: 'full' },
{ path: "**", component: PageNotFoundComponent }
];
- Error Handling: Implemented error handling mechanisms to provide meaningful error messages to users in case of failures.
One of the key highlights of the project was successfully implementing the inventory management system across multiple locations, being able to add, update and edit. The implementation of the crafting funtionality is also a big highlight, although it doesnt work with the inventory of the locations.
Integration of Products and Recipes with Different Locations: Integrating products and recipes with multiple locations posed a significant challenge. Managing inventory and recipes across different locations required careful consideration of data structures, database schema, and API endpoints.
One of the key areas for future improvement is enhancing the crafting functionality to work with different locations. This involves enabling users to create recipes using ingredients from specific locations and managing the crafting process efficiently.
Integrating the project with Spirio, a platform for selling products, presents an exciting opportunity for expanding the reach and commercialization of the application. By connecting Radian with Spirio, users can showcase their crafted products, manage inventory, process orders, and facilitate sales transactions seamlessly.
- Enhanced Reporting and Analytics
- User Feedback and Collaboration Features
- Mobile Optimization and Accessibility
To see a run through of the application, click below:
Contributions are what makes the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
distributed under the MIT License