Set up Eventyay: Docker Up, PR Out - Get Ready for Your First Contribution to a Real Django + Vue Platform Used by Thousands (1/2)

Devcon 8 · 5 Nov 2026 · 40:47

Rachit, Arnav and Om of the Eventyay team at FOSSASIA walk participants through Eventyay, an open source event platform for ticketing, calls for proposals, schedules and video. The session covers forking the repository and the dev branch, copying the environment file, starting the Docker Compose setup (about 30 minutes the first time), creating an admin user and running locally, then creating an organizer, event, ticket types, voucher codes and a call for proposals. It also explains picking a verified, well-scoped issue, using the pull request template and the vEditor plugin, before pausing for a group photo.

Speakers

Topics

From Devcon 8, hosted by Ethereum Foundation.

Transcript

[music] [music] >> Okay, so hello. My name is Rachit. I'm actually a contributor Jichok 2026 contributor at Force Asia. I'm working on the project Event A. This is the Event A team. This is Arnav. This is Salim. This is Mukund and this is Om. So they have been working on different plugins for Event A as well. So what does what actually is Event A? So you must have seen like people organize the events. They need to manage the tickets. Can we open the So they need to manage the tickets. They need to manage the talks. They need to schedule those talks. They need to assign some volunteers, some shifts to

to the people and so on. And sometimes they also stream their events, talks and so on. So what we have done is that we made a unified platform where you can actually do each all of this mentioned thing in just one particular platform. So here you can see a live demo. This is a schedule and we are currently running at the OTS builder room and this is the schedule that's running. So it also shows the details and so on. Apart from that, you can also see the speaker's name and so on. So we will also be going through a live demo on how we can create these things and how you can also build this cool schedule, speakers and tickets and so on as well. So Arnav, can you open the speaker's page?

Okay. So here you can see the speaker's information as well, like who is the speaker, their job title, where they are coming from and so on. Yes. And you can open the speaker profile for more details and all the things as well. So this actually gives a whole idea of what the session is about, who you you guys can meet at the particular session, what you can learn about the session and so on. We have also have the exhibition shift schedule as well. So yeah, exhibition. Yeah. You can also add different kinds of exhibitors here and so on. So, this is about the the start page. How does it look? But what to do if you want to build this? So, can you open

so Eventyay is an open source platform. You can just clone this repo and we actually support two different ways you can set it up. The one is the native Django setup and the second is the Docker one setup. The setup will like the Arnav here he will tell us about the setup and how it works and how you can set it up from a scratch as a new contributor when you are trying to set up a project. >> Yeah, so hope you guys are ready to set up Eventyay and ready to contribute and you know make Eventyay better. So, so like if we if you guys can fire up your laptop, we can actually set up and we can make the first contribution happen today right now.

Yeah. So, so a brief before we start the setup. So, there are two ways to set Eventyay up. You can either it's a basic it's a basic Docker compose. You can we can just hit up and we can have it running or we have the native Django way to set it up. >> Yeah, I think some of the contributors may already have the setup. Like can we have a hand raise like who have the like contributed to this? Yeah, we see one person. Yeah, that's another uh >> we we have a lot of people who have already contributed here.

>> So, we can try this live as well. So, is it possible that you guys can turn turn on the setup and we can get a working for it. Yeah. >> Yeah, pretty cool. So, it's already so many people using it. Good to know. So, so for the ones who have not set it up, let's just quickly set it up. So, if you can open github.com/fossasia/eventyay I hope you guys already have it. So, we can you you can fork it.

>> Yes. >> You can fork it. So I I'll do it with you, right? So I have Yeah so I I have the fork here. Let me sync it with the latest dev. So once you have it, whatever terminal ID you use I use kitty, so So I I'm going to do it right from the scratch with you.

So we can clone this. Yeah. So the internet here is terrible. It's a tech event, so we know it's terrible. Yeah, okay. Yes, you can take some questions.

>> So if you guys have any trouble getting the fork and so on, you can actually ask our team member that are here and they will guide you with the setup as well. >> Yes. [clears throat] So once you have the native fork ready

you can add the remote for the origin like the fork Asia repo. So when you make a PR, you can easily link it. So yeah so let me just show you real quick. Yeah one thing to add here also while creating the PR the PR should be again this is the dev branch as we do not allow the PRs to be created and merge again the main branch so you need to fork the dev branch first and you can create the PRs and so on.

>> So once you have it here you can we have the steps in the readme so you once you have already cloned it you can copy the dot env dot dev dot example. We we have a quick command here. So once you let's just do this. So I already have copied the env here so if you you guys can also do it real quick. Once we have it here we can we can you know or maybe I don't pull it right from the

scratch as I is it not much internet so let me just >> So on the first try for new contributors you actually need to download the volumes and images and so on so at the first try it does take around 30 minutes and so but once you have installed then you can just start and stop through the Docker interface or using the commands as well. >> Yeah so once once you have a basic you know deployment ready so once the Docker build is done. So is it are you guys at pace or is it lagging or it's good enough?

So once we have the local deployment ready, first what you need to do is you need to create a Django admin user. So we have a quick command here for that. So you can create an admin user. So the config is loaded. So you can quickly type in your email what you want for the admin user.

Hello and at gmail.com and you can add a password. I want to just keep it 1 2 3 4 and yeah you have already created your first user which is the first admin user on your native setup. So once you have the admin user we can actually start our local deployment on localhost 8000. So it's still loading here. So we it takes a while.

So we have a lot of plugins with Event as well. They get installed while we do the setup. So it's easy and we don't have to do different installs for different plugins. So in the meantime the config is loading.

Do we have any issues with the setup or if anybody needs a hand, we have our team here to help you set it up real quick. >> Yeah, someone has an issue there? >> Sir, I'm not here. I'm also joined now. So that's why I can't understand first steps. >> Yeah, can you repeat your question sir? Yeah, just logged in my headphone. >> Hello sir.

>> Yeah, yeah. >> Sir, I'm I'm joined now. So I can't understand the before what happened. >> Yeah, so the people who just joined, you can check out the GitHub repository of github.com/fossasia/eventyay. In the if you scroll down to the README, we have a basic quick start with Docker. So it's you can just copy the code block. You can paste it in you're already at pace with us.

Sounds good? >> Anybody else has a question? >> Are there any people they have already started the setup and so on? >> So cool. So we have the local development setup already.

So this is how it will look the first time you start it. So I have created a demo event over here, but we are going to go through right from the start and you know, create the entire setup. So first of all, we let's log him out and we created a demo user, the admin user. So we log in through the admin user. And now let's walk through how we set it up. So, first while we can need to create some organizers. So, as an admin we add some organizers. So, can you go to the organizers?

So, we create a new organizer. Let's just put it for Asia. And each organizer can have a slug. So, all the events have have the slug. You can keep the mic. Yeah so let's keep it fast here. So, once you have an organizer we can create events with that organizer. So, now let's walk through how we can create an event.

So, we select the we select the default organizer. You can select all the different languages uh we are going to have the event in. For example, we have this uh event we have like I think so uh around 100 plus languages in which you can set event A up. We can have uh the we can customize the URL. So, this is the slug which you set up set up initially while setting it up. So, the FOSS was the slug which we set.

We can set the start uh event start time and end time. So, you know it's featured on the event here start page. So, we can have when the event is going live we can have it featured at the time. We have the location. We can you can map it on the map. So, yeah that's it. So, the basic setup is already ready. So, you already have your first event here. So, now uh the first thing is when you start you want to get started with tickets. So, an event always starts with tickets. But in event here it's completely you can choose what you want to do. You can either keep only tickets or if it's a like open open meetup or something we can create meetups or if it's just going to be open talks we can

have just the talk show or if you just want to stream your event and you want to just use event your videos we can use event your videos. You want to create a schedule we can create a schedule. So you know let's start first with a basic you know setting ticketing up an event here. So let's do it for this event yeah. So when you start this is the your home dashboard and you can click set up ticketing. Yeah so first you when you set it up you set up the currency in which the

you you are going to charge the customers for uh the tickets. So it's set up to USD over here. We can have different ticket types. We can have the standard ticket. We can have you know the uh supporter ticket for you know people at events like this with the crypto money. Yeah so we can add a ticket type. We can customize the tickets. We can uh set set up the checkout process. We can have different ticket features. We can let attendees you know download their tickets in different formats and for organizers they finally review everything and they create on the save and continue button.

So once you have set up a basic ticketing uh the next thing you want to do is you know uh set up like you want to publish the tickets so that people can already start buying tickets. so you can check out it at the event status. So it's uh it it's as intuitive as possible. So uh we try to make it uh as simple so you can just you know uh click around. It already tells you where to click and how to set it up. So over here you can already see that we are already 25% ready. It's the event is published on the main page and we can we have made the tickets public and we can have a private test

mode before we do it public. But I think we'll just it's a test event and it's on local so we'll just make it public for now. Yeah. So once you have the tickets, you have the ticket prices, the different types of tickets, the different varieties set up, we can yeah, you can view event you how it looks on the public page. So like we just set up this event on Feb 3rd 2027 in Mumbai and we can you know ticketing is already live.

So you can register and you know get some basic basic tickets, yeah. So all the checkout process can be customized. You can add your own contact information and [snorts] stuff. So maybe we go through editing the CFP for buying tickets. We can edit the order forms. So whatever information you need about your attendees can be customized over in the order forms in the products. We can have set up different questions.

We can have some of them public at some time. We can have some of them private at some other time and as you want. We can have dependent questions. So are you going to attend the side quest and then if yes, we have another questions. Yes, you do you have a question? No. Okay. [snorts] We can have different types of questions. You can have text number and you know everything.

So now let's try and buy a ticket and see how it looks like. So this is the basic ticketing flow, yeah? >> Man, what if I want to give away tickets to my family or something? I'm the organizer no?

>> Yeah, yeah, yeah. So we'll get to that. We can create different voucher codes for different people. So I can give away some tickets and yeah, we can have different ticket types. So we discussed a few minutes ago that we can have different ticket types. >> So all of the people here are getting free tickets, no? >> Well, some of them, some of from the Foss Asia community, some people who contribute and make help us make this platform. We support them, yeah. >> Yeah, yeah, they are getting the free ticket. You especially one.

>> Thank you. >> So the question came about sending the tickets for free tickets and watches as you mentioned. So yes, we do have that option as well. So what we can do is that basically we go to the products and then we have the watches thing here. Yes. So you can create a new watch like you can create a single or a multiple. So the multiple array is the use case for like a sponsors or exhibitors. They need not just one voucher. They need more than one voucher to also hand out to their members and so on, right? So as we had some contributors. So for instance, we need to give out the vouchers to the Foss

Asia contributors, members and so on. So that's where the multiple is used for. So I don't know, can we like add some tags here for like if you are attending a open tag, right? So So is it a static voice for everybody or is it just me? It's fine, right? Okay. So, we have added a tag. So, we can generate codes on how many we wants, such as we add five. So, this five QR codes are generated.

Yeah, we can generate 100. The maximum limit per time is 1000. So, once it's like generated, you need to also assign like how many times a single voucher code can be used. It could be used once time or two times. Mostly it's one in most of the use case. And also you can apply it to a selected products as well. So, for now we have selected all the products and price effect as well. I don't know can we change the price price effect to like 100% off or something? Or 50%, something like that.

Yeah. So, we are giving this voucher for to avail the ticket by 50% discount. And once it's all done, you can just go at the cell. Yeah, we can also we can just save this or you can add the emails to whom this vouchers needs to be sent. So, this is how the voucher things work. >> I think you should >> We need to actually add the 1000 emails. So, we can just uncheck the send vouchers for now and we create the vouchers. This vouchers >> Do you want to change the line?

>> Yes. Thanks. Okay. So, this is how vouchers are created. So, this was the case for one, but we can collect multiple as well. So, yeah, apart from that, we don't just give the tickets. Some events have merchandise and they have other things as well. So, we have other product types as well that you can create and so on. Okay. Let's go to the next session that's talk like we before this we talk by sorry, Vedansh and so on. So we had like the schedule that I showed at the start.

So that is managed all from here as well. So what you need to do is that we can add a session from here or can we go to the homepage and event status so we can make the CFP live. So to make the CFP available for all the users who like the public users and so on, we need to go at the talks that's here and we can just like first there are some issues like you can add this. This is not necessary, but adding this makes it makes it much more valuable so that people can know what they're signing signing for up and so on. So we just click the go live.

Just Okay, and we go to view event. So let's see go to call for proposal. Let's let Arnav create some talk for himself. Can you create a cool talk about Vox Bendo I think? So we are adding the proposal title here. This title is like what the talk date or session is on. We can you can give a small abstraction about it as well. And you can just like the order forms that we created, we can create custom for custom questions for here as well. Those are checkbox, those can be slides and so on.

Okay. Okay. And then we hit continue. So that general part was about the your talk and the session. The second part comes about the profile that's you, the speaker that is going to give the session for this. So you need to if you already have created a a speaker profile, it won't ask you. It will all be automatically filled. But if you are a new person and you are just adding it for the first time, you need to add a full name and biography and some other custom fields they have they have like they ask for sometime they ask for like

which organizer are you form are you attending this or that. Okay. So once the proposal is submitted it goes into the submitted form. It does not actually show up on the live event and so on. So the flow the the continuity flow will be Yeah I don't know can we open the CFP where the sessions are shown. >> You can I'll take over for a bit maybe you can help me out with it yeah.

Yeah so basically we can you know create different sessions and talks but now let's try to move our focus how we can you know try to you know enhance this and you know contribute towards it so that you can you can make some changes and like there are a lot of open issues. So maybe Rachit you can walk through us how do you make our first PR here yeah. >> Yes okay. Let's do this. >> Yeah. >> Okay yeah so we got the brief like a brief understanding or a basic understanding of how the platform work what the platform targets and who is it useful for. So we will just go to the GitHub I don't know can we go to the GitHub.

Okay we go to the top there are there is the issue tab we open the issue tabs. So we have also let's start from a basic thing we have been getting issues from contributors like external they could be internal as well. So what does this verified and non-verified mean. So as a beginner we would suggest that you go with the verified issue these are the issue that is reproduced or are like legit by and verified by the maintainers and so on. So we select one of the issue and we open this easy can we open the third one features piece yeah.

So yeah actually I open issue so the issue is we can start from the description so this is also a good example of well scoped issue what is a well scope issue when you are a beginner so when you are a beginner you don't actually have that much deep knowledge or idea about a platform and how the things work so the well scope issue actually describes what is wrong and at which part as you can see there is a description I added the location the steps to reproduce so it makes easier for the newer contributors to actually understand the issue and where it is happening so also when you are trying to create an issue it is like recommended that you also add some screenshot reference or a video so we can also check so the issue

is that this is a mobile screen view for the speaker and there is this slight UI misalignment like there is a more space at this size but there there is a less space at this side so this is a UI issue so this is how it works so maybe we can go through the solution for this if Arnav can do it >> so there there are already some open PRs for this by do we already have Sanket here I think so Sanket is at the booth so yeah so you you can basically you know make some fixes and you can raise a well scope PR as he already discussed what a well scoped issue is so a well scoped PR is

also the same we already have a basic PR template so whenever you try to open a basic PR you already get this template so you we make it really easy for you so you just have to fill it up so you just tell which issue it closes which issue it fixes or just references we add a basic summary and we add screenshots you know to the fix so that it's very easy for the maintainers to just see oh it's cool yeah it's correct yeah and then they can you know easily get your first PR merged >> it is like you can also use AI there is no restriction that you can't use AI because everyone use uses some kind of AI to solve issues and so on right so but when you solve an issue like the changes they use the changes, but you

should also need to make sure that the changes are well scope and they are not breaking any other thing. Why? Because this actually shows like you are actually also trying to understanding your changes and what you are trying to do. So can we like go to the changes of this and how we check the changes just from the scenes and we understand this. So Arnav will be judging the changes and let's see like what his point of view is about on this one. >> So like it's a basic you know some CSS changes as you can see. So we we just go through it. We see like there are like you can just see that they have adjusted the margin and the column classes correctly. So you can already understand that

the fix is the fix makes sense and we already have you know some AI which is already reviewing the PR multiple times before you know the maintainers actually go through it. So like there are some comments from the AI which the contributor seems to have resolved already. And so we can you can see that for a just a CSS change >> this is >> there is a big test file just for a CSS change. So we can already make out it's already written by maybe Claude because it always generates so many tests. So it's pretty easy to identify like the changes if they already make sense.

Yeah. >> Okay. I think that's about only event A but aside from event A we also have different plugins and so on. So I think Om will be explaining the V editor one and >> So like event A has let me give a short intro about editor before we can go into it. So let's me you know So we we have event here videos as well. So if you check out event A videos we have the entire talk schedule. For example, this video is going live and it's on Eventia as well. So if after

my session, I just want my own video sent out to me on mail. I don't want to, you know, have the entire 50 minute live stream and I don't want to use YT DLP, cut it out and then upload it on my YouTube channel. Instead, we have a plugin which automatically sends you a mail after your session is done and it you can just adjust the timestamps. It cuts out the video and sends it to you in high definition quality. So it's really useful tool and many it's in very high demand. So Om will now explain how it connects with Eventia and how it's can be used. Yeah.

Om So Om and Salim are the developing and maintaining the veditor plugin. So you can check it out at github.com/asia Okay, the internet is gone again. We are at the very cool tech event with no internet. Um >> Connected. I just went >> Yeah, so we got some internet.

So I I hand over the stage to Om and Salim who will now talk about Eventia veditor and also the veditor, how it connects and everything. So stay tuned. It's going to be cool. >> Okay, so let me just give you the brief idea of what veditor platform will be is. So understand this part. If you are a organizer and you organize event like Open Tech India. So you know there's a post-production nightmare and what that

nightmare is that there are hours of recordings and multiple rooms like we have two rooms here builders room and the main stage area and those are hours of recordings and it takes a lot of time to just cut the video and like it takes around months to cut a video and give it a intro, give it a outro and attach it and publish it to the publish it to YouTube. So what veditor brings in is it brings a collaborative automated method for organizers.

What it does is it collaborates organizers, speakers and volunteers together and helps us publish the talk for a every speaker in just one day you can say. So how it works is let me just show you the veditor repo. Okay so it's taking some time to showcase.

Let me just make you understand how veditor will be working. So it's a platform it will be a hosted separate platform and what organizer has to do is just create their talk schedule or you can just import your schedule, attach a video recording of the day and select what talks were there in that day and and just after that video recording is has been attached it will show a approval and a reject option whether the video is correct you uploaded it or not and after approving the organizer selects whether to the intro and the outro should be automatically generated or

they want a default intro and outro for the all the talks that are there in the event. And after that since the talk was imported, it has it already has this mail ID of the speakers and after that they have to just hand it off to the speaker. The speaker will be getting a magic link. After they click on the magic link, it will show them a studio area which in which the wed it in which >> Yeah, so so like we have some technical glitch over here.

So we are going to go with event a team shifts and we can connect the validator again after >> Yeah, that's cool. That's cool. >> Yeah. So if anybody has any questions, we can our team is there to answer it. Yeah. >> Hello, I'm Utkarsh. >> Yeah. >> Please point out if this question doesn't make sense, right? So I have two questions. So my first question is where are we storing the database? Like one by a said if if we want to give the vouchers, but if we're storing database privately, anyone can just edit the vouchers how many want?

>> Like it's on our on our server. So like what do you mean by anyone can edit? It's private. Yeah. >> Like if it's a private database, if it's if the database is on single person's machine, then he can access the database anytime and he can just let's say if the voucher is valid for one time, he can just put it 100 times and then >> If it's his own event and he does it like doesn't make sense like if like the if you check out event.com like it's and you check out tickets for Open Tech Summit at Dev Con. So you can see there are some voucher codes, but it's like the we are the event organizers. So it's us who generates the voucher codes

and it's us who gives it to people. So, we give it to a limited number of people and the organizers don't want to mess with their own event. So, and like if you if I didn't get your exact question, but if you mean that you can change things in your DB, so like if we are hosting it, why would we you know want to corrupt our own DB like >> Yeah, but let's say there's a traitor in your group. Who knows? >> There's a traitor in the team. >> I mean, I'm just I was just curious about the database. Where are we storing the database? Is it the Web3 based like if it if you're storing on a public server?

>> I I get your question now. So, no, it's it's not a Web3 database. It's a PostgreSQL database which is hosted on on our own VPS. So, yeah, it's it's a Web two database. PostgreSQL yeah. >> Okay, no issues. My second question is like the bhaiya said about the voucher. What if I want to do a giveaway? >> Yeah, so we have different kind of product for that. We can create a new product for you know a free ticket free product, and you can name it as a giveaway. You can have different variants of it, and we can create a product for that. We can also create a voucher with 100% off.

You can give a giveaway for that particular ticket to some particular people using that particular voucher codes. Yeah, and you can create a email group, and you can you know even distribute it to a particular email group, and yeah, it's it's possible. >> Okay, right now my machine's dead, otherwise I would have >> Yeah, yeah, maybe you can we have a QR code or you can just check eventia.com. >> Yeah, I cloned the repository. Cool, I did everything, but just now I was starting to look at the code, and then my machine's dead. So, >> Yeah, yeah, there's no plugs here. So, >> Yeah.

>> You can yeah, for you have any more questions, we can there at the Fossasia booth. >> Yes. >> Yeah, so we can you know discuss further. Yeah, cool. >> Thank you. >> So if we have any more questions till the time they're setting it up. So yeah, so this is a basic setup of how you could you know make your first contribution, you make your first PR and you like it you maybe you keep making PRs maybe yeah, then you can keep contributing. Come to the FOSS Asia summit and we can connect with the entire FOSS Asia team there and we can possibly maybe do Google Summer of Code with us. It's

nice road down there yeah. So do we do we have the team shifts ready? So let me hand it over to another developer of FOSS Asia and >> Sorry to interrupt here. So we are having a group photo so the one of the member here will guide you to like where we are taking the group photo and like it is recommended and we request you to come wherever the group member tells you so we can have a group photo which every members and every person who is here. >> Yeah. So yeah, so let's have a quick five minute group photo we'll figure out where it is yeah.

>> I don't know actually what HDMI was saying we need to work >> So we need to go to the we need to go to the community OTS main stage so let's all of us proceed in there to have a group photo. All the core members are inside for the photo so let's go yeah. We can continue the workshop after the group photo. >> the workshop so we can discuss the club in that time. >> Yeah, cool and yeah. >> It's it's it's probably better to do it after because we're already finished. It's >> Yeah, what I was saying is that this session is almost over and we have another session for event here later on.

So we can come back here again and we can discuss the rest of the repositories and how you can contribute to those repos. Thank you. >> [music]