You are browsing as a guest. Sign up (or log in) to start making projects!

  • 4 Devlogs
  • 15 Total hours

Tired of signing in to Google Drive in order to send files to your other device? Tired of sending yourself an email and taking up precious cloud space? Or are you tired of big tech killing or keeping software inside of an ecosystem that fix this issue? Fero is a device-to-device file sharing software, runs locally on your computer.

Open comments for this post

4h 31m 20s logged

Devlog #3 | Big milestone

What’s up buttercup

Okay, so 1. I found out that devlogs should be shorter than what I am doing, but I realised that other people are doing the same so I don’t know if I should make it shorter or no, but I’ll try to reduce it. 2. I just realised I probably shouldn’t have explained that part because now it’s longer. 3. I just did it again I am super sorry.

Okay fr now what’s up

I’ve finally implemented FILE TRANSFERS yay!! But why not earlier? I need to first implement basic security measures, authentication and where each file belongs to. If I hadn’t made that part yet, then I’d be stuck having a bigger headache than I already have. I’ve also added device information in order to display what devices share the same room. I’ve ALSO also added some new templates for flask to render_template() with and display new information.

Stubbornness

My biggest issue that I’ve encountered by far was downloading multiple files at a time. And I find it kind of stupid because why can I upload multiple files but not download them??? I’ve scoured the internet and found the same suggestion: “just make it so you download a zip brah”. But I did not like that idea, it was so stupid and just ruined usability. So after a while of thinking, I realised I would probably make multiple download links and return them to the user for them to install the files, but what python command/feature could do a sorta thing.. hmmm. what python command could bundle up strings into one big string that can be analysed piece by piece, like some sort of… list… (say that again..). Anywho, yeah so I made a function where it puts all the links it generated into one list and that way another function (at the moment it’s a render_template) can take all of the links and download each file individually in the same page without redirecting the user constantly and without the user knowing. Although at the moment it’s just one page that displays all of the links and you have to download them manually by clicking the links but that will change later. The app now also contains a license (GPL-3.0) that will get distributed with it once it releases.

What’s next?

Right now, all of my functions have to be accessed manually (so I have to go to one link to create a room, another to upload, etc, etc), I’ll change it to be one continuous smooth process. At the same time, I’ll implement approving connections and various other minor stuff.

What’s attached?

This is some brand-new stuff: I’m attaching a video that both shows the file transfer working AND promotes my app. (I was going to use Bobby brown’s song “that’s the way love is” because he’s the goat but because of copyright I can’t, so take this audioless video instead.)

0
0
5
Open comments for this post

5h 6m 49s logged

Devlog #2 | Yummy cookies

Recap!!

Fero is an application that runs locally on your computer allowing you to transfer files to and from your devices. Last devlog I explained that I managed to setup a sort of session system to assign devices a “room”, that will be useful for the transfer of files later on, but then I realised that flask can not really manage sessions server side…

What’s new?

I managed to find out how to make titles and stuff for my devlogs :). But yeah, you’re probably wondering what’s new for Fero and not my devlog :(.
After some time of research, I realised I would not use flask-session, it wasn’t documented very well in my opinion, so it was difficult trying to implement it. I knew I needed some sort of database like SQL, and I knew how to use SQL a bit because of this super awesome steam game that teaches you about SQL (shout out Database Detective!!!). After a quick search I found flask_sqlalchemy, it gives you the ability to host your database in a file ending with .db and doesn’t require you to setup a service running in a different port and in docker (yeah flask-session I’m looking at you. Who even uses redis???). After some trial and error, I got the hang of the package, and I managed to implement a Rooms database that grabs the room’s ID, device IP (which is set as unique and the primary key), invite code, and the device type (whether the device is recieving or sending):

class Rooms(db.Model):    
roomident: Mapped[str]    
deviceip: Mapped[str] = mapped_column(unique=True, primary_key=True)    
invcode: Mapped[str]    
devicetype: Mapped[str] 

I’ve added the ability to delete rooms, get room info of the receiver or the sender, delete client sessions, and made the room info show a QR code that allows you to join the room from a different device!

@app.route('/reciever/join/<joincode>')
def bindingjoin(joincode):    
findRoom = db.session.execute(db.select(Rooms.roomident).where(Rooms.invcode == joincode)).scalar_one() 

# took me a RIDICULOUS amount of time to figure out how to filter it, turns out I was doing Rooms.roomident == joincode instead of Rooms.invcode == joincode. smh.     

session['ident'] = findRoom    
session['joincode'] = joincode    
session['IP'] = request.remote_addr    
session['type'] = "recieve"    
createdroom = Rooms(roomident=findRoom, invcode=joincode, deviceip=request.remote_addr, devicetype="recieve")
db.session.add(createdroom)    db.session.commit()    
return redirect('http://' + IPAddr + ':5000/reciever/roominfo') 

I’ve also added temporary developer tools in order to debug my program, this WILL be removed in the future as they provide access to modifications and the invite code (big no no to leave it public) to EVERY client. Unless I can find a way to leave it in WITHOUT giving access to it to every client.

This took me a lot of time to make, mostly because I was experimenting with a new package that I have no clue how to use. I don’t remember really what were the parts that were super hard to implement because this devlog was supposed to be upload like 2 days ago, but I took a little well-deserved break.

What’s next?

Now we have a way to track devices (local router assigned IP and room Ident) and what they are supposed to be doing (recieving or sending), I will implement a new system that allows me to get ADDITIONAL device information (like device name), that way in the future, we can approve or deny access to clients to the room. I will also now work on the MAIN part of the project now, which is file sending and recieving. Which will be an IMPORTANT milestone and I cannot wait!

What’s attached?

Just some photos of some of the dev tools and the new room info page.

0
0
5
Open comments for this post

2h 19m 30s logged

ACTUAL Devlog #1 | I managed to start it.

(Before going into this, I’d like to apologize for the last devlog and this one, I am still getting the hang of the best practices for stardance.)

So, I’ve managed to start my project. How? Well, I realized I need to slow down and focus, I grabbed a piece of paper from my printer and started writing down how Fero would work on a arrow diagram (I think that’s what it’s called.) And when I was staring at this piece of paper, It hit me, I should work on the project step by step (duhh.)

I’ve never really completed much of my projects, I’ve always rushed them so I don’t know how to make projects, but I really wanted to finish this one to prove to myself, I wasn’t lazy and I could do whatever I set my mind to.

Back to what I was saying, the first step of the project was device discovery and room creation. I worked on making an API service that could make random “room and share codes”. Room codes follow a 2 letter then 3 number system (example: AB-123) and the share codes are extremely long and are made using the secrets package on python. They sort of work as like a username and password. The room code is the username, can be public and can be used to verify if you are in the right room. The share code is like the password, it’s not public (should be private) and the server (local machine) checks if both matches on both devices (both session cookies), if it does then it would allow the receiver device to, well, receive. Although I haven’t worked on the discovery nor have I worked on the sharing part of the app, it’s still a major step in this project that I am proud of.

However, I realized I have made a big mistake, you see, session cookies are handled by flask, but it shouldn’t be that way because natively flask can’t do much management or filtering for sessions, it only does basic stuff. For that I need flask-session, so NOW i have to learn flask-session, what it can do and how to use it. And rewrite a big part of my code (though it’s only 75 lines at the moment so no big deal, I guess.)

Time to get back to work.

0
0
5
Open comments for this post

2h 38m 40s logged

The longest road I’ve ever been in…

So, right now I’m working on Fero, my peer-to-peer application that solves one of my biggest issues, dropping files from one device to another because most of ’em either are too weird and bad and some have been just shutdown (rip intel unison).

I made this project to challenge myself, and now it seems like my biggest step of this project is the START of the project, I have no clue where to start, it’s very difficult. Not only that but I’m thinking of utilising P2P packages like libp2p, but even then it’s very complicated. I’ve been going at this for 2h and 36 minutes and regardless how much I try to make sense of this project, I don’t how to start it.

Regardless, I will push through, and I will make it a reality. I have perseverance.

1
0
5

Delete project?

Are you sure you want to permanently delete this project? This action cannot be undone.

All devlogs, followers, and associated data will be removed.

Followers

Loading…