Alperen Akyol - bounswe/bounswe2025group2 GitHub Wiki
Note: You can reach my weekly efforts at the bottom of this page.
Note 2: You can reach my description about the external api that i have used at the bottom of this page.
Hey, I am Alperen (a.k.a. AipAkyol), a junior CmpE undergrad in Bogazici University.
My main interest areas are Game Development and Algorithms.
My favorite programming language is Java:
class Main {
public static void main(String[] args) {
System.out.println("Everyone loves Java!");
}
}Programming Languages:
- Java
- Python
- C
- Svelte
- RISC-V and GNU Assembly
I have created many projects inside and outside of the class. You can check their repos from my Github Profile.
You can also check my first web project that can be used for concurently checking the local time of the cities around the world.
- Gaming and Game Industry since my main goal is becoming a game developer one day :)
- Reading fiction books 📖
- Watching Movies and TV Series, my favorite one is a German series called Dark
- Playing football ⚽
- E-mail: [email protected]
- Github: link
- LinkedIn: link
- You can always find me around the CmpE building in the North Campus :)
The Quotes API provides motivational quotes functionality for the GenFit application fetching motivational quotes from the ZenQuotes API, offering both random and daily quotes to authenticated users. The implementation consists of a Django model and corresponding API views.
- Model Definition:
/backend/genfit_django/api/models.py - API Views:
/backend/genfit_django/api/separate_views/quote_views.py
class Quote(models.Model):
text = models.TextField()
author = models.CharField(max_length=100)
fetched_at = models.DateTimeField(default=timezone.now)
class Meta:
ordering = ['-fetched_at']
def __str__(self):
return f'"{self.text}" - {self.author}'The Quote model includes:
-
text: The content of the quote (TextField) -
author: The name of the quote's author (CharField, max 100 characters) -
fetched_at: Timestamp of when the quote was fetched (DateTimeField) - Automatic ordering by most recent quotes first
- String representation combining quote text and author
@api_view(['GET'])
@permission_classes([IsAuthenticated])
def get_random_quote(request):
quote = fetch_and_cache_quote()
if quote:
return Response({
'text': quote.text,
'author': quote.author
})- URL :
/api/quotes/random/ - Method : GET
- Authentication : Required
- Caching : 15-second cache to prevent excessive API calls
@api_view(['GET'])
@permission_classes([IsAuthenticated])
def get_daily_quote(request):
quote = fetch_daily_quote()
if quote:
return Response({
'text': quote.text,
'author': quote.author
})- URL :
/api/quotes/daily/ - Method : GET
- Authentication : Required
- Caching : Cached for the entire day
def fetch_and_cache_quote():
try:
recent_quote = Quote.objects.filter(
fetched_at__gte=timezone.now() - timedelta(seconds=15)
).first()
if recent_quote:
return recent_quote
response = requests.get(f"{ZENQUOTES_API_URL}/random")- Checks for quotes fetched in the last 15 seconds
- If none found, fetches new quote from ZenQuotes API
- Stores quote in database for caching
- Falls back to most recent quote if API call fails
def fetch_daily_quote():
try:
today_start = timezone.now().replace(hour=0, minute=0, second=0, microsecond=0)
daily_quote = Quote.objects.filter(fetched_at__gte=today_start).first()- Checks for quotes fetched today
- If none found, fetches new daily quote from ZenQuotes API
- Stores quote in database for daily caching
- Falls back to most recent quote if API call fails
- Returns 503 Service Unavailable if quote fetching fails
- Implements fallback mechanism to use cached quotes
- Gracefully handles API timeouts and connection issues
The quotes API is integrated with the GenFit application to provide motivational content throughout the user experience, such as daily motivation on the main page.
Week 1 (13/02/25 - 20/02/25)
| Task | Description | Duration | Type of Work | Issues |
|---|---|---|---|---|
| Wiki Personal Page | Created a wiki page to introduce myself, the goal was to have familiarity with markdown. | 1 hours | Task | #6 |
| Create the GitHub Introduction page on the wiki | Created a wiki page to cover Introduction to Github info. | 3 hours | Task | #18 |
| Meeting 1 Moderation | Conducted and moderated the first meeting. We have decided that Güney will moderate the meetings until the first milestone since he has experience | 1 hours | Task | Meeting 1 |
| Meeting 2 Notetaking | Tooks notes while the meeting conducts, then created the meeting 2 wiki page. | 90 minutes | Task | Meeting 2 |
| Issue Review: Create Labels | Reviewed the created labels for issues and gave feedback. | 10 minutes | Review | #1 |
| Issue Review: Building a personal profile page on wiki | Reviewed Berkay's personal page and gave feedback. | 10 minutes | Review | #8 |
| Issue Review: Constructing the Research part of the wiki and adding the documentation about 'Git' | Reviewed Berkay's research about Git and gave recommendations regarding improvements. | 30 minutes | Review | #16 |
| Issue Review: Prepare a wiki page for "Fun Fact About Git/GitHub" | Reviewed Ahmets's research about fun facts regarding Git and Github. | 30 minutes | Review | #22 |
Week 2 (20/02/25 - 27/02/25)
| Task | Description | Duration | Type of Work | Issues |
|---|---|---|---|---|
| Forum Requirements | I had decided and wrote a introductory forum requirements for the project chosen (12) by the team. | 3 hours | Task | #35 |
| Write Elicitation Questions Regarding Forum | I examined and wrote the elicitation questions regarding forum after writing requirements. | 20 minutes | Task | Questions |
| Issue Review: Login & Registration Requirements | Reviewed Ahmet's requitements regarding login and registration, gave feedback. | 20 minutes | Review | #38 |
| Issue Review: Profile & Account Requirements | Reviewed Doran's requitements regarding profile and account, gave feedback. | 10 minutes | Review | #30 |
| Issue Review: Constructing the Research part of the wiki and adding the documentation about 'Git' | Reviewed Berkay's research about Git and gave recommendations regarding improvements. | 30 minutes | Review | #16 |
| Issue Review: Enhancing Wiki Main Page | Reviewed Ayhan's enchantements about wiki main page. | 10 minutes | Review | #41 |
Week 3 (27/02/25 - 06/03/25)
| Task | Description | Duration | Type of Work | Issues |
|---|---|---|---|---|
| Glossary Update (Forum Requirements) | I updated the glossary with the terms that are used in forum requirements | 30 minutes | Task | #42 |
| Refinement of the Forum Requirements | I refined the Forum Requirements in the light of the Customary Meeting | 1 hour | Task | #44 |
| Adding the Notifications Tab to the Requirements | I added a new notifications tab to the requirements since the neediness of the seperate tab because of the increased wants on the notifications. | 3 hours | Feature | #46 |
Week 4 (06/03/25 - 13/03/25)
| Task | Description | Duration | Type of Work | Issues |
|---|---|---|---|---|
| Adding Acceptance Criteria Header to the Issue Template | I added an acceptance criteria header to the issue template since we have decided (in the meeting) having it will make our issues more defined. | 10 minutes | Task | #52 |
| Preparing Use Case Diagram about Goals | I will prepared a use case diagram about a user interacting with goal mechanism. | 4 hours | Feature | #55 |
| Pull Request Created: Add user-goal-use-case-diagram.png | After creating the use case diagrams that are in png's, i have created a pull request to add these png's to the main branch. | 30 minutes | Pull Request | #57 |
| Pull Request Reviewed: Added sequence diagrams about Goals | I reviewed and gave feedback about this PR regarding adding some png's that will be used on sequence diagrams. | 30 minutes | PR Review | #58 |
| Issue Review: Preparing a Sequence Diagram for the Goal Mechanism | Reviewed Berkay's sequence diagram featuring the goal mechanism, gave feedback | 2 hours | Review | #54 |
Week 5 (13/03/25 - 20/03/25)
| Task | Description | Duration | Type of Work | Issues |
|---|---|---|---|---|
| Ensure name conventions for wiki titles are met | I ensured that all the names in the wiki follows a convention. | 30 minutes | Task | #67 |
| Add the weekly efforts of previous weeks | I added the weekly efforts of previous weeks to my personal page. | 1 hour | Feature | #66 |
| Meeting 8 Notetaking | Tooks notes while the meeting conducts, then created the meeting 2 wiki page. | 2 hours | Task | Meeting 8 |
| Issue Review: Creating the Main Wiki Page | Reviewed Berkay's recreation of the wiki main page, gave feedback | 20 minutes | Review | #68 |
Week 6 (20/03/25 - 27/03/25)
| Task | Description | Duration | Type of Work | Issues |
|---|---|---|---|---|
| Add Software Requirement Specification | I added Software Requirement Specification page to make requirements page more defined and structured. | 3 hours | Feature | #80 |
Week 7 (27/03/25 - 03/04/25)
| Task | Description | Duration | Type of Work | Issues |
|---|---|---|---|---|
| Research Django | I researched Django for back-end development. | 2 hours | Task | #99 |
Week 8 (03/04/25 - 10/04/25)
Ramadan Break --- No job done
We have decided to conduct our weekly meetings on saturdays from now on, so the weeks will start and end on saturdays as well for my weekly effort table.
Week 9 (10/04/25 - 19/04/25)
| Task | Description | Duration | Type of Work | Issues |
|---|---|---|---|---|
| Research Django | I continued my initial research on Django for back-end development. | 4 hours | Task | #99 |
| Set Up Notifications API | I set up the api regarding the notifications in the light of notifications requirements. | 6 hours | Feature | #110 |
| Pull Request Created: Back-end Notification system | After implementing the API for the notification system, i have created a pull request to merge it's branch to its parent branch. | 1 hour | Pull Request | #112 |
| Issue Review: Add the Meeting 11 Notes | Reviewed Berkay's notes about the meeting, gave feedback | 20 minutes | Review | #98 |
Week 10 (19/04/25 - 26/04/25)
| Task | Description | Duration | Type of Work | Issues |
|---|---|---|---|---|
| Add a pr template | I added a pr template as requested in the meeting | 45 minutes | Feature | #151 |
| Set Up Profile API | I set up the api regarding the profile in the light of profile requirements. | 7 hours | Task | #147 |
| Pull Request Created: Create PULL_REQUEST_TEMPLATE.md | I have created a pull request for the pr template | 15 minutes | Pull Request | #152 |
| Pull Request Created: Backend profile impl | After implementing the API for the profile, i have created a pull request to merge it's branch to its parent branch. | 1 hour | Pull Request | #153 |
| Pull Request Reviewed: Goal endpoints added to the API | I reviewed and gave feedback about this PR regarding adding the goal mechanism api. | 1 hour | PR Review | #149 |
| Issue Review: Backend meeting 2 notes | Reviewed Yusuf's notes about the meeting, gave feedback | 20 minutes | Review | #131 |
| Issue Review: Create ER diagram | Reviewed Doran's er diagram and sql code regarding the class diagram, gave feedback | 30 minutes | Review | #111 |
Week 11 (26/04/25 - 03/05/25)
| Task | Description | Duration | Type of Work | Issues |
|---|---|---|---|---|
| Backend Vote Implementation | I implemented the voting mechanism that will be used inside the forum as decided in the main issue of the forum implementation. | 7 hours | Task | #166 |
| Backend Forum Implementation | We implemented the forum features with Doran and Yusuf alltogether, by first implementing the seperate features alone, then merging all of them and testing together. | 5 hours | Feature | #165 |
| Pull Request Created: Back end vote implementation for forum | I have created a pull request for the vote implementation for the forum that is merged with other forum features | 1 hour | Pull Request | #170 |
| Pull Request Created: Backend Forum Implementation | I have created a pull request for merging the the forum features that we have implemented with Doran and Yusuf into main . | 3 hours | Pull Request | #168 |
| Pull Request Reviewed: Backend Forum&Thread implementation for forum | I reviewed and gave feedback about this PR regarding adding the forum and thread implementation of Doran. | 1 hour | PR Review | #171 |
| Issue Review: Forum and thread model implementation for forum | I reviewed and gave feedback about this issue regarding adding the forum and thread implementation of Doran. | 1 hour | Review | #167 |
Week 12 (03/05/25 - 10/05/25)
| Task | Description | Duration | Type of Work | Issues |
|---|---|---|---|---|
| Meeting Notes for Back end meeting 4 | I summarized the back end meeting 4 in the wiki page. | 45 minutes | Task | #193 |
| Learn and write an examplary unit test | I implemented a unit test about profile since we all required to implement one. | 3 hours | Feature | #194 |
| Containerize and research deployment options | Me and Berkay researched deployment options and containerization since the project is required to be deployed in cloud. | 12 hours | Feature | #195 |
| Pull Request Created: profile overhaul and testing added | I have created a pull request for profile unit test, test automation, and some profile changes | 2 hours | Pull Request | #216 |
| Pull Request Created: Containerization deployment | I have created a pull request for containerization that will be used to deploy the project in the cloud using docker compose and digitalocean | 3 hours | Pull Request | #210 |
| Issue Review: Add Meeting 14 Notes | Reviewed Berkays's notes about the meeting, gave feedback | 20 minutes | Review | #190 |
Week 13 (10/05/25 - 17/05/25)
| Task | Description | Duration | Type of Work | Issues |
|---|---|---|---|---|
| Meeting 16 Moderation and Notetaking | Conducted, note-taked, and moderated the last meeting. We have talked about the last day of the implementation and splitted works to everyone | 2 hours | Meeting | Meeting 16 |
| External API for motivational quotes | I used an external api called zenquotes that is used on getting motivational quotes and write endpoints for it. Also wrote front end for it | 4 hours | Feature | #220 |
| docker compose improvement | I added a documentation on how to run the docker compose, and also change the population file to have real names, and change its prints to not to show while docker composing. | 2 hours | Task | #228 |
| Notifications connections | As back end team we made sure that the notifications are working correctly in the models we have implemented. | 3 hours | Task | #229 |
| notifications for votes | I inserted the notif system to the votes using signals, also changed the populate-db since now notifs are automatic. | 3 hours | Task | #239 |
| Fix forums are missing in some occations | I fixed the missing forums bug by inserting a location hook. | 4 hours | Bug | #262 |
| Fix old comments stay on threads | I fixed the old comments staying on new threads by modifying the query key. | 1 hour | Bug | #270 |
| Vote status 404 on Forum | I investigated this bug and fixed the back end problems and identifed non-bug 404's. | 3 hours | Bug | #250 |
| Requirements Overhaul | Yusuf and I changed the req's to make them parallel with current implementation. | 3 hours | Task | #274 |
| Document the external zenquotes api on my main page | I documented my external api on my personal wiki page. | 1 hour | Task | #275 |
| Emphasize communication plan on wiki main page | I reworked on the comm plan on the wiki main page. | 30 minutes | Task | #271 |
| Add delete to forum | Ahmet and I added delete vote functionality to the forum. | 1 hour | Feature | #278 |
| Pull Request Created: Ext api zenquotes | I have created a pull request for the external api that i have used. | 1 hour | Pull Request | #223 |
| Pull Request Created: Dockercomp doc population fixes | I have created a pull request for the fixes regarding docker compose. | 2 hours | Pull Request | #237 |
| Pull Request Created: Added notification for votes, deleted manula notif creation in db pop... | I have created a pull request for the notifications integration in votes and db populate overhaul. | 2 hours | Pull Request | #241 |
| Pull Request Reviewed: Unit tests for login added | I reviewed and gave feedback about this PR that adds unit tests for login. | 1 hour | PR Review | #212 |
| Pull Request Reviewed: Ai tutor is added using external groq api | I reviewed and gave feedback about this PR that adds an well done ai chatbot to the chats page. | 2 hours | PR Review | #215 |
| Pull Request Reviewed: added local hour fetching & some cleanups to web fronend | I reviewed and gave feedback about this PR that adds local hour component using an external ai. | 3 hours | PR Review | #240 |
| Pull Request Reviewed: Downvote fix | I reviewed and gave feedback about this PR that fixes downvote interactivity in the forum. | 1 hour | PR Review | #266 |
| Pull Request Reviewed: added delete calls to api | I reviewed and gave feedback about this PR that add delete vote functionality to the forum. | 2 hours | PR Review | #276 |
| Pull Request Reviewed: Home page fix | Reviewed this pull request regarding fixing home page such as adding non-static goals tab etc. | 1 hour | Review | #283 |
| Issue Review: fix reg error on server | Reviewed this issue regarding fixing some bug that is in the server while registration | 2 hours | Review | #218 |
| Issue Review: Notifications connections | Reviewed this issue regarding making sure that notifs are working correctly for all the aspets of the app | 1 hour | Review | #229 |
| Issue Review: Fix ongoing problems in the goals page | Reviewed this issue regarding fixing goal issues such as adding progress | 30 minutes | Review | #230 |
| Issue Review: Fix downvote not turning blue | Reviewed this issue regarding fixing downvote not turning blue when downvoting comments first time | 2 hours | Review | #264 |
“Here’s the thing kid, we don’t get to choose how we start in this life. Real greatness is what you do with the hand your dealt”