Show HN: OffChess – Offline chess puzzles app

362 pointsposted 3 days ago
by avadhesh18

164 Comments

laurentlb

3 days ago

Nice project!

As it was not clear from the description, there's a one-time payment (4.29€) to get more than 7 puzzles in a day.

Lichess also offers a good alternative to this, although their offline support is limited.

zikduruqe

2 days ago

> offline support is limited.

You are limited to 50 puzzles when off the network, and when you reconnect, the next 50 (or the delta between how many you played and 50) are redownloaded.

deepdarkforest

3 days ago

CT-ART 4.0 is the gold standard. Again, not fully free, but it has some very instructional features, like playing against alternate moves, solving mini versions of a puzzle, playing the opposite side etc. Used it for years.

jaredhallen

3 days ago

TacticMaster on F Droid seems to have all the same features for free.

avadhesh18

3 days ago

A great app no doubt but the descriptive hints on OffChess and a different rating system set OffChess apart from TacticMaster.

scotty79

3 days ago

To be fair you shouldn't be sitting in the bathroom for that long because you'll develop hemorrhoids.

reaperducer

2 days ago

To be fair you shouldn't be sitting in the bathroom for that long because you'll develop hemorrhoids.

Maybe he's really good at chess?

(Unlike my former co-worker who would monopolize the one men's room stall for two hours at a stretch doing chess puzzles on his phone, and I'd have to go to the IT building. Gross.)

eru

2 days ago

Just use a standing potty?

scotty79

2 days ago

I thought squatting was all the rage.

eru

20 hours ago

Alas, I remember an article about a guy with a rectal prolapse after watching videos for hours on his phone using a squatting toilet.

watwut

17 hours ago

ChessKing has some stuff availabke only after payment, but has pretty good thematical collections.

thethimble

2 days ago

Amazing! Would love “premoves” so that I can input the next move before the first move’s animation completes. This will help maintain flow state for your more experienced users.

See chessbook for an app that does this really well.

avadhesh18

2 days ago

I will look into the app you suggested and try to implement premoves.

dan_can_code

3 days ago

great app, I like the adaptive style, but one piece of feedback is that, sometimes it is not clear what the goal is. For example, the language "Brilliant queen win ahead!" tells me, right, I am going to checkmate for the win with the queen in this game. But, actually the puzzle is to instead win the queen piece. "win" in chess to me always means checkmate.

Overall great app.

bongodongobob

2 days ago

The goal is always the best move. You shouldn't think of "what is my goal?", you should be finding the best move. This is something I struggled with as a beginner. There is always a best move, find it. Don't search for "the goal".

avadhesh18

3 days ago

I will change the confusing wording like this but for now I can tell you this, if it mentions a piece by name then the puzzle is about winning that piece and not the game. Thank you for trying the app out.

bongodongobob

2 days ago

Wait, are you saying that you have puzzles where the "winning" moves aren't the best moves? If so, that is not good.

spagettnet

2 days ago

Subtext is that the solution is always the best possible move sequence. OP’s comment is clarifying that sometimes after executing the best move sequence, the puzzle ends with a capture, and sometimes ends with a checkmate (“winning”).

avadhesh18

2 days ago

No, the winning moves are always the best moves.

chatmasta

3 days ago

Awesome. I’ve never understood why Lichess limits the offline download to 50 puzzles.

djexjms

3 days ago

For what it's worth, the entire Lichess corpus of puzzles (over five million positions with solutions and theming tags) is available for download in CSV format at https://database.lichess.org/#puzzles

zippyman55

2 days ago

I downloaded this and wrote a small program to filter on 1, 2, 3, 4, and 5 move puzzles. I also segregated by rating. Then I ran them thru stockfish (there are some errors) and generated several years worth of daily puzzles. It’s part of a daily chess feed I have for my club. So, puzzles get harder thru the week, similar to NY times crossword puzzles. I uploaded this to my cheapo web server. I give credit to lichess and provide a link to play the position on the lichess.org website.

chatmasta

3 days ago

It’s not worth much when I want to use the Lichess app on an eight hour plane ride to solve them :)

I like the feature because it updates my rank when I get internet restored. I just wish they cached more than 50 offline.

mansoor_

3 days ago

Can you tell us about the tech stack you used and why?

modernerd

3 days ago

Great start! Gentle feedback:

- Text hints should probably be off by default, they give too much of a hint.

- Auto-advance to next puzzle would be helpful, clicking “next puzzle” gets tiresome.

- Typo in the puzzle categories list: “Egnlish Opening”

avadhesh18

3 days ago

1. I enabled them by default because I thought most people won't even know about their existence if they weren't there but if someone is bothered by them they will definitely find the menu item and disable it.

2. I will add an option to enable auto advance in future update.

3. That typo is embarrassing — thanks for catching it! There’s always something that slips through.

mijoharas

2 days ago

Nice app (bought the in app purchase).

I went to find the setting (independently of this message, I'd prefer it off by default, but seems fine either way) and I actually can't open the menu, which I assume is the three dots I can see in the top of my phone. It appears to be behind my notification bar?

The Offchess text in the top left is behind my phone's clock as well. Maybe just some padding is needed?

Android 15, Nothing phone 2 if it matters. Message me if you'd like more details.

avadhesh18

2 days ago

This happened because latest Android version explicitly needs to be told not to go edge-to-edge. It's been fixed, stalling in the Google Play App Review, might take a day or two but as soon as you update it will be fiex. Also, yes there is a menu item to turn hints off.

avadhesh18

2 days ago

Fixed now, you can update from the store if you don't have auto updates on.

mijoharas

2 days ago

Can confirm the fix works. Thanks!

fractalf

2 days ago

Great! ...but doesn't work on my google-free Android. Ie, it requires play services. Please fix this :)

avadhesh18

2 days ago

Will have to implement a different billing system for that so it will take some time.

valtism

2 days ago

I'm just about to leave for a long international flight, so this is absolutely perfect for me!

Glad I saw the comment about it being paid so I could get to the purchase screen before I lost internet. (As a side note, it says "Buy now for $3.99" but it's really $5.99 in my currency. Not sure if you can make the button match to the price in the locale)

avadhesh18

2 days ago

It is just a placeholder for the price in your currency. Sometimes the play billing library takes a little while to get the price from the server. If you swipe up the app from app drawer(force close) and open it again it should show the correct price in your currency.

tigroferoce

3 days ago

Solo developer, no ads, no subscription. Take my money! And thanks for writing decent software.

avadhesh18

2 days ago

Thank you for your kind words.

richardreeze

17 hours ago

Awesome project! Would be great if I could set goals like "solve 10 puzzles a day" and have the app track it for me.

Chess.com doesn't offer this option, so would be a neat differentiator :)

bambax

3 days ago

Very nice! but why not a webapp as well (for those of us who seldom use their phone and can get bored at the office)?

avadhesh18

3 days ago

OffChess website will be soon available in beta with multiple features.

aoeusnth1

2 days ago

Probably because lichess.org exists?

tajd

3 days ago

This looks really cool! I can't remember what article I was reading the other day but it was advocating for local first software as being the true goal of creating user friendly software -> this app absolutely meet's that goal. Looking forwards to using it.

eajr

3 days ago

Very cool app. Chess.com costs too much and lichess is rather ugly and has barebones puzzle support. I like how you can choose different categories. Will be using this from now on. Btw you have "Egnlish Opening" misspelled.

poloniculmov

3 days ago

Try lichess' beta app, it's much more user friendly, even if it's missing a couple of features.

heap_perms

2 days ago

For tactics I really like chesstempo.com. It has free, unlimited puzzles. It is to my mind superior for tactics training. It also has a comments feature which I really like.

avadhesh18

3 days ago

Thanks for your generous reply and Oh my god how did I miss that, will fix in the next update.

tdiff

3 days ago

I wonder where were those 100k puzzles sourced from?

GCUMstlyHarmls

3 days ago

TacticsMaster on F-Droid also says it has 100k puzzles, sourced from https://database.lichess.org/#puzzles, though that says it has 5 million puzzles, so perhaps 100k is just a coincidence, a nice number, or maybe of the 5m there's a nice subset.

> Generating these chess puzzles took more than 100 years of CPU time.

The page includes a link to the puzzle generator and tagger for interests sake.

binarymax

3 days ago

Not OP but generating puzzles isn’t hard if you have a database of games and I’ve done it myself.

For each game just fast forward to the end and ask for Stockfish to provide the solution. If it’s guaranteed “mate in X” then you’ve got yourself a puzzle. You can have a classifier that grabs other puzzle types too (“win the queen in X” for example)

zippyman55

2 days ago

At scale, It gets a little harder trying to explain the solution. There is often a combinatorial explosion of move possibilities, so it’s not easy to just say MATE IN 4 if there are 40 or 50 potential responses all leading to mate. Granted they are obvious mates but there may be users who do not see the obvious mates.

yunwal

3 days ago

Love the app! Would love it twice as much if you allowed me to turn off the sounds (it turns off any existing podcasts or music).

avadhesh18

12 hours ago

Have pushed the update, should be visible in a few days on app store.

avadhesh18

3 days ago

Thanks for the review, will add a toggle in the next update.

sirjaz

3 days ago

Are you going to make a desktop client?

avadhesh18

2 days ago

This should work on Macs by default, will look into making one for Windows/linux.

AiAi

3 days ago

Thanks for rdx, it’s the way I use reddit nowadays.

I have only used OffChess briefly but one feature request I have is to remove the possible path of the piece when clicking on it (like Lichess).

Another improvement would be the placement of the “next puzzle” button, that seems to be in a crowded place.

avadhesh18

3 days ago

Updates are coming to rdx as well and thanks for your feedback on OffChess, will look into your suggestions definitely.

frankfrank13

3 days ago

Nice! Quick feedback:

- it plays sound even when my (iOS) device is muted

- would love an option to automatically go to next puzzle

avadhesh18

2 days ago

Thanks for your feedback, In the upcoming update I will... 1. add a toggle to disable sounds. 2. add an option to enable auto advance in future update.

volemo

2 days ago

It plays sound when the device is muted, has no preference to disable sound for the app, and moreover, the sound effects interfere with playing media, i.e. when I make a move the app pauses my music, playing in the background, to make a sound of a moving pawn.

avadhesh18

12 hours ago

Have pushed the update, should be visible in a few days on app store.

avadhesh18

2 days ago

Thanks for the feedback, will be fixed soon.

tangoalpha

3 days ago

Nice app. Using moto edge 60 pro. The app navigation gets hidden under the phone navigation icons. I'd like to pay. Except without user login, I am unable to figure out if the purchase can be linkedin to my 2-3 devices (each of which may use a different Google account)

avadhesh18

3 days ago

Thanks! A couple of other people in this thread have mentioned that bug too and I'll get it fixed ASAP.

There's no login required since the app uses Google Play Billing on Android and App Store billing on iOS. That also means purchases are tied to the Google account used to buy the app, so unfortunately they can't be shared across different accounts.

I hate the annoyance of apps forcing you to create an account before you even try them and that's exactly why I kept it simple and login-free. But yeah, the trade-off is stuff like what you pointed out. To balance that, I made it a one-time low-cost purchase instead of a subscription. Hope that makes it fair.

mdaniel

2 days ago

> That also means purchases are tied to the Google account used to buy the app, so unfortunately they can't be shared across different accounts.

I don't have hand-to-hand experience with Google Play, but quite a few of those billing platforms offer "discount codes." So to help the GP commenter, I would imagine they could email you from their purchasing Google account and ask for 100% off codes for their other Google account addresses

I don't know how to help the sibling comment, short of you just straight-up making them a custom .apk without Play Billing. FWIW, it's actually absolutely painless to host your own f-droid repository <https://gitlab.com/fdroid/fdroidserver#what-is-f-droid-serve...>. It's marked AGPL but despite its name one doesn't need to run that package to host a repo, just $($HOMEBREW_PREFIX/bin/fdroid update --verbose --create-metadata -W error) and then $(rsync -Pav --delete ./repo/ your-awesome-host:/repo/)

It's so painless you could even do that per user, as in lucb1e-fdroid.example.com or lucb1e-a6d7c104-e9b1-4ddc-ad5a-470e51bb5069.example.com

lucb1e

3 days ago

> There's no login required since the app uses Google Play Billing

...so it requires logging in with a Google account. That means I won't be able to buy the app on my phone

A one-time purchase for an offline privacy-friendly app is 100% fair and the price point and free tier seem great to me (someone upthread said it's like 4.7€ if you want more than 7 puzzles per day iirc), but please just add an option to send you money directly via e.g. IBAN. It's one of the few privacy-friendly options and you also get to keep all of the money

Most other options cut people out: paypal doesn't work half the time ("sorry, something went wrong" when the algorithm hates you today), stripe has issues when your bank and residence country don't match, credit card requires a good credit score, etc. It's all data- and algorithm-based, whereas banks are legally obliged to give you a functional account because it underpins so much of society nowadays. I'd be happy to pay for the app even without using it as a way to add my 'two cents' and hopefully make this more worth your time

avadhesh18

a day ago

I will definitely look into supporting alternative payment methods, someone else also has a de-googled phone and asked for the same in this thread too. I wonder if any of the alternative payment methods has a sdk that I can integrate directly or I will have to go the old school way of using software keys.

charcircuit

2 days ago

A Google account is free and only takes a few seconds to make.

mdaniel

2 days ago

> one of the few privacy-friendly options

almost certainly implies it's not a technical hurdle that they're facing. Plus, purchasing would require giving Google payment details, which would necessarily include billing address, and now it's tied to your phone. I could very easily imagine that giving a lot of folks a lot of heartburn

lucb1e

a day ago

Huh? Try it, since like ten years it requires validating the account with a phone number, which in many countries requires going through government verification. That alone takes a while to set up if you want a new account that isn't linked to other things already. It's not a quick as generating a new password in your password manager and coming up with a non-taken username anymore

You also can't log into this app specifically, it will tie all apps on your device to this one account. Nobody should be doing this, it's like logging into the Chrome browser and tying all pages that have any sort of google service on it (embedded map, youtube, analytics, ads) to the phone number and thus identity you signed up with

shric

3 days ago

I have an iPhone 16 Pro and there is an annoying delay between tapping a move and the piece moving

avadhesh18

3 days ago

Is it the animation of the piece moving? I’ve tested it on a bunch of iOS devices and haven’t noticed anything odd, but I’d love to take a closer look. If you can, please share a video or GIF. It’ll really help. You can email it to me at support@offchess.com. Thanks for trying my app out and giving feedback.

shric

2 days ago

Somehow today (I reached the limit yesterday) the delay has gone away, so I can’t reproduce it.

What happened, from memory:

1. Tap piece at original location

2. Tap piece at destination

3. Piece animation commences

4. Piece animation finishes

5. Move sound occurs

Everything was smooth except there was an approximately half second delay (may have been less) between 2 and 3.

44za12

3 days ago

Cool app. I’ve been thinking of building a similar PWA for a while now, might actually do that.

avadhesh18

3 days ago

Even I thought of first making it a PWA too, the only problem is storage of the puzzles database.

B56b

2 days ago

Oh is there a reason you couldn't use IndexedDB to store the puzzles?

ptrkrlsrd

2 days ago

I recently deleted the chess.com app due to monthly price, so I'm thrilled to start using this app instead! Good job!

khoury

3 days ago

Very cool looking! Downloaded. What tech did you build it with? :)

user

3 days ago

[deleted]

avadhesh18

3 days ago

Swift, Java, Javascript, Sqlite etc.

noja

2 days ago

Could the hint not show the full move?

i.e. just show the piece, not the piece and where to put it?

spamalot159

3 days ago

Love it! The notification bar on my OnePlus 13 blocks access to the triple dot settings button on the top of my screen. ither than that it's clean.

avadhesh18

3 days ago

That's been fixed and the update - as soon as it is approved by Google should be available on play store.

defrost

3 days ago

Nice. Any retrograde chess puzzles with this?

avadhesh18

3 days ago

Not yet but interesting idea, I might add these as a category in the future.

iambateman

3 days ago

This is cool! Is there a chess board library that you used or did you have to built it from scratch?

avadhesh18

3 days ago

I built the board from scratch but used the awesome chess.js library by Jeff Hlywa for move validation.

neoromantique

3 days ago

For some reason I cannot download it on Android with Aurora Market, perhaps it is too new?

avadhesh18

2 days ago

Only available on play store for now :(

ryanrasti

3 days ago

Congrats on the launch!

I was wondering -- how does the point-based rating system work?

avadhesh18

3 days ago

It takes both yours and puzzle's rating in consideration while calculating. Just below the chessboard you can see "+12 -10" that means this puzzle will gain you 12 points if you solve this or you will lose 10 points if you fail.

The system is based on ELO with the main difference being that the K factor in OffChess is variable, https://en.wikipedia.org/wiki/Elo_rating_system

wery

3 days ago

I can't select the settings button on my Pixel 8 :|

avadhesh18

3 days ago

I am so sorry about your experience, will be fixed by tomorrow if Google approves the update soon.

notcrazylol

3 days ago

Thank you and God bless you my friend :)

kij

3 days ago

Nice, bought to replace 'chess tactics puzzles' the addition of rating changes sold me.

Too late did I notice that there is no share fen button. I use that for harder puzzles when I want to understand why a given solution wouldn't work. Mostly just share to Chessis.

avadhesh18

3 days ago

Share fen and share pgn buttons will be added in the next update.

tenken

2 days ago

You attribute chess.js as MIT license ... But I'm curious where you sourced 1,000 addon puzzles for $3.99.

.... As I doubt you thought them all up yourself. You may want to attribute your non-derivative assets.

mhitza

3 days ago

I have TacticMaster (available on F-droid) but your app looks more polished and will have to give it a try as well.

freedomben

3 days ago

Neat, just downloaded it off of fdroid. Really cool, thank you!

stavros

3 days ago

This is a nice app, but I have one bug report: When I tap on a piece, and it can capture another piece, it looks like it just can't move that way. Capturable pieces should have their background change somehow, to indicate that I can capture them.

avadhesh18

3 days ago

Yeah, that’s more me being lazy than an actual bug. I left it like that assuming most people would figure it out anyway — but you’re right, it’s bad design. I’ll add a border around the "capturable" pieces.

stavros

3 days ago

Thanks, it left me a bit baffled the first time, as it seemed to say I can't capture the piece, when I knew I could. I tried anyway, and it worked, but it was confusing.

Upvoter33

3 days ago

That’s more of a feature request not a bug report

rprouse

3 days ago

The app is full screen on my Samsung mobile so your bottom navigation is underneath the onscreen Android navigation and unusable. Happy to submit an issue and screenshots if you have a GitHub repo.

Other than that, it is working nicely so far.

avadhesh18

3 days ago

I'm really sorry about your experience. Could you please let me know your device name and screen size? I will make sure to fix this, along with any other bugs people report here and push an update to the app stores by tonight.

avadhesh18

3 days ago

Update: I have fixed the issue, the update will be available as soon as Google approves it.

stavros

3 days ago

Same here, there's some text at the top that's below my clock and icons:

https://imgz.org/ibGDKfuf/

avadhesh18

3 days ago

That's not supposed to happen, there should be space left for a status bar and a navigation bar. Can you share the make and model of your device?

stavros

3 days ago

Yes, it's a Nothing 2.

avadhesh18

3 days ago

Fixed, update should be available as soon as Google approves.

stavros

3 days ago

Thank you!

avadhesh18

2 days ago

Did you update? Should be fixed now.

stavros

2 days ago

There's no update for me yet :(

avadhesh18

2 days ago

Sometimes it takes a while for Google Pla to distribute the update in different parts of the world. Check Google Play in a few hours and it should be there. I have confirmed with multiple people and they say the issue has been fixed with the update. If you still have the issue you can always mail me.

stavros

2 days ago

I got the update and the issue is fixed, thanks! Still no border when capturing, though (I don't know if that's been implemented yet).

avadhesh18

2 days ago

> Still no border when capturing

For that you will have to wait for the next minor update.

johnnyfuego

2 days ago

You had me when you said some of your best thinking happens in the bathroom.

Looks cool. On Android the UI seems to extend below the status bar at the top and below the drawer at the bottom of the screen which creates some overlapping though.

avadhesh18

2 days ago

I have fixed the issue, just waiting for Google to approve the app.

tomhow

3 days ago

[stub for offtopicness]

lucb1e

3 days ago

Note that the discussion continues in the collapsed comment by tomhow: https://news.ycombinator.com/item?id=44499848

It says "stub for offtopicness" but, skimming them, literally all comments are on-topic. Not all substantial ('very nice app', 'whats the tech stack?') but a lot of other comments are a normal amount of substantial and also in there... I don't get it, but note that you can expand that subthread

tomhow

2 days ago

Sorry about this. I've moved most of the comments in the stub back to the main thread.

We've recently had some threads about new product announcements in which the thread quickly fills up with "booster" comments from new accounts or old/dormant accounts that come back to life just to post these comments. The "stub" is a way to hide those comments without penalizing/hiding the main thread and the product it's about.

We were getting some emails and comments suggesting that this was happening here too, so I started trying to address it by moving some comments into the stub, intending to spend more time figuring out which ones were authentic and which ones seemed inorganic, but was slow to get back to it.

I think in this case, most or even all of the comments are actually organic or authentic; people just really love a good chess app!

Sorry for the confusion!

lucb1e

2 days ago

Thank you for clarifying! No worries about the delay of course, we all have more things to do. Do I understand correctly that a 'booster comment' is about steering the conversation / making the product look well-liked to those who open the thread, and not that it boosts the submission up in some way? (If you can say that in light of people gaming it)

tomhow

2 days ago

In this case the "things to do" was sleep, and the overarching issue is trying to do moderation work that really requires peak cognition when it's late and you're falling asleep, then leaving it half-done.

By "booster" comments we just mean comments that are highly positive but low on substance. "Great app!". "Congrats on the launch!". Comments like that are often an indication that a friendship network has been rallied to show public support and create "social proof". But often these kinds of commenters try to get clever and add in Dorothy Dixer questions about the tech stack or something else to make the comment seem more authentic and substantive, and enable more details to be shared.

Often when that happens, it's green (new) accounts or old/dormant accounts posting the comments and upvoting the thread, but there wasn't much of that here (though there was a little, which is what aroused suspicion).

But these comments don't have any effect on the thread's ranking. It's only a vibes effect.

avadhesh18

2 days ago

I can assure you I didn't ask a single person I know to comment on this, most of my irl friends don't even know what hackernews is. All comments, even the ones that are hidden now are organic. Even I thought it's weird that an 8 year old dormant account decided to comment on my post but I have nothing to do with that.

tomhow

2 days ago

I believe you (and didn't actually think you'd rallied anyone, we thought something else was going on). Sorry for the bother!

chatmasta

2 days ago

If my comment was marked in this sweep, does that mean my account is marked as suspicious/booster?

tomhow

2 days ago

No not at all, nothing was "marked", just moved temporarily then moved back. Sorry to cause alarm :)

krishnasangeeth

3 days ago

I posted this

``` Hi ,Congrats on the launch. I built a free iOS app also which has chess puzzles.

https://apps.apple.com/us/app/knighty-chess-puzzles/id674524...

Would appreciate feedback. ```

Not sure if that's why it was moved to `stub for off topicness`. I wonder if it is some kind of categorisation logic based on text.

lucb1e

2 days ago

I'm also wondering if it's an automatic classification. Wouldn't expect that on HN, but the posts in there are so random that it almost must be.

As for that specific comment, to be fair, I could actually understand: promoting your own product in someone else's thread without really saying anything at all about the submission (topic) that was posted could be seen as off-topic. I don't really mind it (I don't think I voted on it), but I could see a human also classify it that way

krishnasangeeth

2 days ago

Yeah , that's fair. More than promotion i was trying to suggest i had also built something similar and kind of understand the product space. It's this dev thing, can't shake it off i guess. But i get what you meant.

Apart from that i have a theory that there is a lot of ML based ranking and classification that is happening at the backend.

nso

2 days ago

Why would you in 2025 only build for iOS?

krishnasangeeth

2 days ago

This was a swift app. I wanted a bit more native feel and didn't go for react native.

avadhesh18

3 days ago

Can you please explain what it means? I have been using HN for years and only seeing this for the first time. Seems like some mod action but searching on google didn't return anything.

ycombinete

3 days ago

I’ve seen dang do something similar before to clean up a thread of off topic comments.

chatmasta

3 days ago

Yes, very strange and I was wondering why my comment which is on topic was added here…

There are other comments which are clearly on-topic, e.g. direct feedback about the app, which have been relegated to this weird sub-thread.

If this is a new feature, I’m not a fan of it. We have downvotes for off-topicness.

endorphine

3 days ago

In my experience, nothing beats the puzzle quality of ChessTempo. Curious how this compares to that.

90s_dev

2 days ago

A bit off topic, but since you mentioned doing your best thinking in the bathroom, two things you should try are (a) no caffeine, and (b) no soy. These should dramatically cut down on the number of times you have to go and how long it takes.

avadhesh18

2 days ago

I love my time there but thanks for your suggestion.