 He just showcased to you. So like you saw even TA website is the one where you bought all your tickets and applied for the call for papers and all those stuff. So that's basically hosted on this server. It's using that server. Our server is mainly now deployed into Kubernetes. But like he showed you later on that the admin features that are there. So you can always host your event in event here. That's always there. But if you want to make your own event organizer server, use this open source project to create a server where you want other people to host your events, then you need to deploy it to your local systems. So ours is deployed into Kubernetes because we felt that it would be easier to scale it in Kubernetes and stuff. But there are a lot many other places where you can host. So I will go through a very main step that we always do to host the event organizer server. That's just the local deployment steps. But firstly, I will give you a brief overview. So as he has said, it's an event management server. It has almost all the features, the idea was that we would have a closure of all the event management websites that we already have. So there is even right there is even no there is some other scheduling websites and stuff. But what we needed is we go to one place, we get everything we don't need other places to visit for other tasks. Right. So that was the idea. And moreover, the idea is it's completely open source. Right. So you can host your own means make a own event management server. So you have a college or an institution where you host other kinds of events or they are a group of people who host events. So you can always create your own server deployments. So yeah, as I can say, these are all the ways of deploying to means we have already ready these ways of deploying. So you can install everything manually like completely manually you get a Linux system or a window system or even a map. And you follow all these steps for some of these steps vary from system to system but mostly it's the same. Then there's vagrant like if you don't want to go through it manually, you just want to give it a go and like you do vagrant up and stuff. So you can always use vagrant. There's Docker because your containerization is the next thing everyone is hearing that then AWS AWS is a legacy thing you might say because everyone uses though there was a problem in AWS S3 and all this stuff. But okay, we still have that Google Compute Engine Kubernetes. Kubernetes is also one of Google Cloud thing only and then there's Heroku. So Heroku is like if you want to have a free or like you don't want to pay and you want to just check whether your deployment works. So Heroku is one of the good options. So these are the ways to deploy the stack used. Yeah, so a quick raise of hands like how many of you have worked in a lot deployed a project which works in Flask and PostgreSQL. Okay, you are there because you worked on this one. So anyone who has worked in Flask and PostgreSQL it's pretty much all the same steps that we follow in a Flask and PostgreSQL project. So like all the requirements.txt to be installed using PIP and all those stuffs. And apart from that like to reduce the file size and the project size we have used Bower. Bower is for installing the JS packages. We didn't use any as such JS frameworks like because we didn't want like if Angular breaks tomorrow we don't want our system to break as well. So we mostly rely on JavaScript native JavaScripts and jQuery. But yeah, obviously there are some JavaScript libraries that we need for drag and drop and stuffs like that but mostly those libraries are also based on jQuery. Yeah, right. So that's basically the end of slides. Now I will go through the steps to deploy it. So this is basically our project link. If you can see github.com slash fosh sr slash open even dog server. So if you go into the read me there is a big list of installations. Okay, so all you have all the like steps for all kind of installations. You don't need to worry about them. It's kind of like quite vividly mentioned in every step how to install everything. So I will go through the general installation or the local installation thing because that's what if you want to contribute to the project you will be needing the local installation stuff. But you can yeah to like right away start off with the development you can always do vagrant. And if you want to reply then there are all this setup from four to nine I would say if you want to reply your own server and host your own events then you can go through four to five. But I will go through step two mainly. And then I think need and then we'll talk about Cuban it is a little more. So yeah, so what do you do to reply your own organizer server. Firstly, you will need Python to postgreSQL. Right. So making Python to work on your system is your like own concern making postgreSQL work on your own system is your own concern if postgreSQL breaks in your system. That's not our fault. That's nothing to do with the project. So let's just clarify that part. Yeah, so you can always do postgreSQL installation using pseudo apt get install postgreSQL postgreSQL country. If you are using a federal flavor of Linux, then you can do DNF install instead of apt get install. And it would work similarly. Now we need npm node js and all those stuffs for installing power mainly if you can install power and build it from its own GitHub repository. It's perfectly fine. We don't need it. So but you know, it's better to do it using npm. Right. So after you have node js npm and all those stuffs which most people already have, then we go to the main steps of installations. So yeah, the infamous step or the famous step pseudo peep install minus a requirements.txt. So that's a step I guess all the Python projects have. So you might say that this step doesn't like everyone knows this step you see a Python project. The first thing you do is pseudo peep install minus a requirements. So yeah, you do that. All your Python dependencies get installed like flask flask res plus and there are other flask Python libraries that we have been using. Right. So that gets installed. There are few problems you might face. Like if it's your first project, and you're starting from scratch, then you might need to install your dev Python dev package from apt get or if it's your failure Fedora flavor, then you it would be Python devil, Python hyphen devil, and it would be pseudo DNF install Python hyphen devil. So whatever flavor you have, it will, it might change a little bit. But mainly this is kind of the open to the Debian flavor that we have followed. Yeah, so we can go through it and you can say that I can assure you it works on Fedora because I am using Fedora right now. So yeah. And then if you have done all these steps, so your Python dependencies should be installed by now. So you have all the Python dependencies and so now you need a database because without the database where you're going to store the information. So what you do is you go into PostgreSQL, PSQL and all those stuffs. You create a new user, whatever you want to name the user, give a password, don't give the password start obviously because yeah, obvious reasons, then create database and all those stuffs. Now what we have done is yeah, we use PostgreSQL but you can use SQL alchemy or other databases as well because we are finally using ORMs, right? So we can, that's why you want to give a preference to MySQL. You can do MySQL as well. So that's your preference. We have specifically done it using PostgreSQL and we know it works good with PostgreSQL. So yeah. Then you do the JavaScript installation. So JavaScript installation is if you have Bower, then you don't need to do the first step and then you just do Bower install and it will all like install and download all your JavaScript dependencies. So after all this is done, all your installations are basically done here. So you have the entire project, entire thing that's needed in your for deploying this project. So your project is ready to be deployed. Now we wanted the first idea of Mario and our team was that we wanted to make the project as much customizable as possible like you saw that form. We have like switch on and off button so that we can customize according to what the even needs for a call for call for paper thing, right? So the same thing we wanted to do for database URLs or the server names and all those stuffs as well. So database URL, we are not hard coding it into the code. We have environment variable set as database URL. So you set the environment variable database URL to whatever database URL you are using. This will basically PostgreSQL colon slash slash event will basically set it up to it. It will set it up the username and the password if it's the username and the password of the database is same as the username and the password for your system or wherever you are hosting. Then it will set it up like that. Otherwise, you can also set it up. Just give me a second. Yeah, so otherwise you can also do something like this. So this the first part open event user is the username start is the password at the rate. It's the local. So the it's the IP address and then the port. So whichever way you want to do, you can do that. Even if you have a minor scale setup, you can do my scale. If it's a scale like you can use a scale like so that's completely upon you. So you at that case, you will just need to change the database URL and every time you create a new database. So suppose you have like you want to create another event or another event management host system. So you don't need to go through the entire system settings again. You just create a new database and you change the database URL. So then again, it will store all the information in the new database. So you don't have to do the installation again from the beginning. And the server name, your server name works the similar way. It's also an environment variable that we are setting so that we can have like the IP address and the port. So for the security purposes, mainly we use the server name so that we can check the URL from which the things are being sent and stuff. Okay, so after all this thing is done for PostgreSQL, you have to restart the system so that like all the database and stuffs have been made and all the changes have been made. So yeah, pseudo service PostgreSQL, this works in most of the Linux systems. And if you are using Mac, you can use brew. After you have done this, then you need to create the table. So for creating the tables, there is a file called creative create underscore DB dot py in the project. Excuse me. So Python create underscore DB dot py if you do that, that will create basically all the tables that are needed for setting up the event, like the event management server. So once all the tables are set up now, you have all the columns and tables ready, you can go and work with it. And yeah, Python manage dot PB and Pydb stamp it. So what this does is so we are using a management system so that we don't like if suppose tomorrow we make a change in the database and you just need to pull your code again and you just need to migrate it. You don't need to create the database again. So that's why we are using the migration tool that's available in flask. It's also available in Django. So I guess some of you might have worked with it. So what it does is by after you have done DB stamp head. So it will like stamp it kinds of provides a stamp or you can say it kinds of point to the last revision that we have made into the migration. So the next time we change something and we create another migration. So we just need to do python manage dot Pydb upgrade. So that will upgrade it to the next version. So that way you can update your database. You may say the table things and all those stuff. So that basically after you have done step six, your server is actually ready to go. So basically even if you don't do step seven and use directly go to python manage or py run server or this step and you run it and the server is running. You can use all the features and all those stuffs and almost I won't say the entire server would be running but almost everything would be running. Now some of the features that are there we wanted it to be like real time. Right. So if there's a notification we don't really want the notification like if you have created an event. So the event management or the admin should get a notification as well as an email. So we don't want that email or the notification to arrive like after sometime we want it to be real time as much as possible. So for those things we have used radis and celery. Celery is mainly used for like scheduling some of the tasks. So suppose we have some of the tasks like the deleted events he was showing but the deleted events also we can't keep all the deleted events forever. Right. Because then our database will play goal huge size. So we can do that. So what we do is we keep a time after which the deleted events go get deleted. So this kind of scheduling works for this kind of scheduling works. We are using flask celery. Also there are other scheduling tasks. For example, suppose you are buying a ticket. So you will see when you buy a ticket there is a like 10 minute session. So after you create that 10 minute session it's in pending state after that it gets into a rejected state. But even the rejected states are stored in the database. Right. But we again don't want all the rejected state tickets to be there in the database. So we want it to be deleted just after like after we have already gone through something like maybe 72 hours or something like that. And then we will have like we can delete all the rejected tickets that we already have. So for those kind of tasks and all other scheduling tasks we made celery. So after you have installed ready server in whatever way that is you can use that to get it. It should be okay. So I think it should be abdicated. So there is already an issue in the documentation. So any one of you who wants to create a pull request. Yes you go ahead. I will merge it right now. And then there is pseudo DNF installed ready server. So that's for the Fedora on the radar flavors. And after that you have done integrate underscore socket out. This is again an environment variable. So you set it to environment variable. If you want to use socket I will be having to set it to true. If you don't want to use it. It's false. Perfectly fine. Most of the real 10 things might not work. But yeah. Otherwise it's perfectly fine. After that if you have done this all the steps are done. You go to localhost colon 5000 and your project is running. So that's basically everything you need to do. But you might say OK. So is this this easy and it will go this mood obviously not as we know a while installing it. Every project we will face some problems and that has nothing to do with the project again. So that's basically why. OK. So as you can see most of the things are mentioned in app get installed. But then again you if you do do DNF install Python Dev in Fedora it will give you an error because Python Dev doesn't exist in DNF. So it will be Python Dev. So those are some of the things that you might need to search out in Google. Or if you want you can make the documentation better and again send a pool request so that both of the way works. So we would love to have your contribution if you want to in like provide some of the documentation and improve the documentation for other flavors or other systems that might help others to set up it up. But yeah. That's basically how you get the entire organizer server setup. And after you have set up you get all the features ready to serve. So that's basically how you set it up. Any questions basically that's it. If you guys have any questions you can ask me or I will be around you can talk with me later. This is my Twitter handle and GitHub and almost everyone else.