- Introduction
- Diagrams
- Entity Relationship
- Relational Diagram
- Class Diagram
- User Types
- Admin
- Employee
- Clients/customers
- Interfaces
- Usability and Accesibility
- Technological Stack
- FronEnd
- BackEnd
- Comparison
- Installation Steps
- BackEnd Setup
- FrontEnd Setup
- Test
- User Requirements
- Postman
- Planning
- Conclusions
- Helpfull Links
- This is a colaboration of three people to give an application for the supermarkets in order to make the process of buying products more efficient. The idea was born from the necessity that many customers have when the management of tickets scanning the Qr with the phone camera. It was developed using HTML, CSS and JavaScript in the Frontend and RubyOnRails in the backend.
- The admin can create, edit and delete the lists and increase or decrease the number.
- The employee has access to view and increase or decrease the number of the lists.
- The client only has access to take a ticket of the list he desires.
- Large Buttons:** Large buttons are easy to see and click, making it easy for users to interact with them.
Simple and Common Interface: A simple interface is easy to understand and navigate because the experience is repetitive.
Menu: This menu is an efficient way to hide less important navigation options on smaller screens.
Easy Access to a Help Manual: Providing users with easy access to a help manual that teaches them the basic uses and requirements of the application.
Error Handling with Clarity: Displaying clear and concise error messages, guiding users on how to correct issues without causing frustration.
Form Field Validation: Informative messages appear to guide users on the information they should input.
-
Color contrast: Using dark text on a light background to improve readability.
-
Large and easily visible text, to facilitate comprehension and usage of the application for people with vision impairments.
-
When the main image fails to load, it automatically displays a local alternative, ensuring that users always have visual content.
These practices have been incorporated to make the website more accessible and provide a positive experience for all users.
-
Ruby (Version 3.0.0+): Dynamic, object-oriented programming language.
-
Ruby on Rails (Version 7.1.1): Web development framework following the convention over configuration principle.
-
PostgreSQL (Version 1.1): Relational database management system.
-
Puma (Version >= 5.0): Application web server for Ruby.
-
Devise and Devise-JWT: Gems for user authentication in Ruby on Rails.
-
Active Model Serializers and JSONAPI Serializer: Facilitate serialization of Ruby objects into JSON API formats.
-
Rack CORS: Middleware for Cross-Origin Resource Sharing (CORS) handling in Rails.
-
Figaro: Gem for securely managing environment variables.
-
Bcrypt (Version ~3.1.7): Hashing algorithm for secure password storage.
-
Bootsnap: Gem for reducing boot times through caching.
-
React (Version 18.2.0): JavaScript library for building user interfaces.
-
Ant Design (Version ^5.11.0): UI component library for React.
-
Axios (Version ^1.6.0): Promise-based HTTP client for making HTTP requests.
-
React Router Dom (Version ^6.18.0): Library for handling navigation in React applications.
-
Web Vitals (Version ^2.1.4): Tool for measuring web application performance.
-
Testing Library (Version ^13.4.0): Set of tools for unit testing React components.
-
Anime.JS: A lightweight javascript animation library.
-
In the realm of programming, each language and framework possesses its own identity and purpose. Ruby stands out for its elegant syntax and versatility in web development and scripting. Node.js, with its nimble asynchronous handling, positions itself as an efficient choice for concurrent operations on the server side. Python, renowned for its clarity and versatility, finds application in a wide array of fields, from web development to data science.
-
When considering frameworks, React shines for its flexibility and the creation of reusable components, while Angular offers a more comprehensive structure with two-way data binding and TypeScript for more structured development. Ultimately, the choice among these technologies depends on the preferences and specific needs of each developer and project.
-
Ruby, in my view, appears as a blend of Node.js and Python. It took some time to get accustomed to it, but it is a highly versatile language, and once you grasp its foundations, it becomes quite intuitive. On the other hand, React, which I had used before, proved to be straightforward and comfortable.
This repository contains a project with a Ruby on Rails backend and a React frontend.
-
Clone the repository:
git clone https://github.com/AishaYanez/tibuticket.git
-
Change into the project directory:
cd tibuticket
-
Navigate to the backend folder:
cd backend
-
Install Ruby dependencies:
bundle install
-
Generate master.key:
rails credentials:edit
-
Set up the database:
rails db:create rails db:migrate
-
Start the Rails server:
rails server
The backend API should now be running at
http://localhost:3000
.
-
Open a new terminal window and navigate to the project root:
cd tibuticket
-
Navigate to the frontend folder:
cd frontend
-
Install Node.js dependencies:
npm install
-
Start the React development server:
npm start
-
- To activate the frontend test you need to go to the frontend and execute this command:
cd frontend
- Execute this command
cd backend### BackEnd - To activate the backend test you need to go to the backend and execute this command:
rails test- Execute this command
- To activate the frontend test you need to go to the frontend and execute this command:
- R1.1 The application has a user interface designed for mobile devices.
- R1.2 The application has an admin interface designed for PC.
- R2.1.1 No account - Allowed to view information about lists and take a ticket.
- R2.1.3 Employee account - Used to view information about activities. In the future, the employee will be able to see a list of assigned activities and view the user profile.
- R2.1.4 Employee account with administrator role - Used to manage activities (create, update, delete) and view the user profile.
- R2.2.1 To create a new account, the user needs an email, a nickname not in use on the platform, and a password. They will have to enter the password twice to verify that they have not made a mistake.
- R2.2.2 The email must have a valid format verified with a regular expression.
To log in, the user must enter the account email with their password.
To change the password, the user has to enter their old password to verify it and their new password.
To delete their account, a user must be registered.
At the beginning of each sprint, the team holds a sprint planning meeting. In this meeting, the team, reviews and prioritizes pending tasks from the product backlog. The team selects tasks they can complete during the sprint, taking into account the team's capacity and task complexity.
The agile method can be stressful if you fail to maintain the desired pace with issues, but if used correctly, it can be very useful for organizing and, in joint projects, improving communication among programmers.